数据库性能监控工具的使用
如何查看数据库的健康状况?
使用druid进行监控。
数据库性能监控工具
监控数据库连接量、并发量、吞吐量、响应时间等功能。
连接需要监控的数据库。
数据库连接性能基本信息(连接量、并发量)
Monyog数据库性能监控工具的使用
可以实时监测MYSQL服务器,查看MySQL服务器的运行状态。支持查询分析功能,能够轻松找出有MySQL的问题所在。
1、数据库连接基本信息:最大连接,已使用连接,连接使用率;并发连接的最高数目,连接超时时间;当前正在运行的线程。
所能支撑的最大连接是多少?
2、数据库性能实时监控:增删改查状态,数据传输量,连接状态,表级锁,慢查询。
3、数据库性能监控报表展示
4、列表信息展示:哪台主机在访问数据库?访问的是哪个数据库?
5、查询分析器信息展示。
数据库缓存失败是怎么回事?
写入缓存是一种能够把对磁盘的写入操作暂时缓存起来,然后等到系统空闲的时候再执行相应操作的工作模式,能够提升系统性能。
当前正在运行的线程?
此时处于活动状态的线程数。太多的活动线程表明服务器负载过重,可能是锁争用或未优化SQL查询。太多的活动线程不利于性能。
如果数据库过载,运行的查询数量就会增加。偶尔的高峰在很短的时间内是可以的。太多的活动线程表明:
1. MySQL花了太多的时间来处理你的请求。
2. 您正在不断地检索/更新大型数据集。确保查询被调优为使用索引。
如何查看数据库qps,每秒有多少个查询?
insert select等操作的数量?
Monitor监控页面
绿色代表:没有问题的项
黄色和红色代表:有问题的项,需要重点关注
红色项中的异常指标,鼠标点击就会显示说明信息,而且会给一个正常的参考值。
性能监控仪表盘
线程页面:显示当前由MySQL执行的线程数,发送到MySQL的每个查询都在线程中执行。
PROCESSLIST面板
性能实时监控页面
实时在服务器上持续执行一系列查询,并获取有关顶层查询,表,数据库,用户,主机,锁定查询等信息。
信息实时统计,包括数据库的增删改查数量,慢查询语句等,Statements Bytes Connections Table Locks等
Monyog的查询分析器功能可帮助您识别问题SQL,Monyog可以通过多种方法找到问题SQL。
https://www.cnblogs.com/starlight-yang/p/10064368.html
show full processlist 命令
1、id列:用户登录mysql时,系统分配的"connection_id"。
2、user列:显示当前用户。如果不是root,这个命令就只显示用户权限范围的sql语句(root和其他用户)
3、host列:显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户。
4、db列:显示这个进程目前连接的是哪个数据库。
5、command列:显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)等
6、time列:显示这个状态持续的时间,单位是秒
7、state列,显示使用当前连接的sql语句的状态,很重要的列。state描述的是语句执行中的某一个状态。一个sql语句,以查询为例,可能需要经过copying to tmp table、sorting result、sending 8、data等状态才可以完成。
9、info列,显示这个sql语句,是判断问题语句的一个重要依据。
在主从复制环境中,show processlist或show full processlist对于判断状态很有帮助。
对象信息---->DDL----->建表语句里面有索引。 可以查看这个表里面有多少索引。
redis可视化工具TreeNMS
TreeNMS是一款redis,Memcache可视化客户端工具,采用JAVA开发,实现基于WEB方式对Redis, Memcached数据库进行管理、维护。 功能包括:状态参数监控,NoSQL数据库的展示,库表的展示,key,value的展示,新增,修改,删除等数据的在线编辑维护,数据库备份还原,SQL语法帮助,Json数据格式化查看,在线数据源选择配置等。系统内置14套UI皮肤,使用中可以依个人喜好选择配色方案。
如何监控集群?
使用 Netdata 监控 Linux 服务器性能
https://testerhome.com/topics/16382
jstack(栈)
jstack用于生成java虚拟机当前时刻的线程快照。
-F:当正常输出请求不被响应时,强制输出线程栈堆。
BLOCKED 状态跟 I/O 的阻塞是不同的,它不是一般意义上的阻塞,而是特指被 synchronized 块阻塞,即是跟线程同步有关的一个状态。
BLOCKED 状态的定义
前面已经说过 BLOCKED(阻塞) 的简单定义为:
一个正在阻塞等待一个监视器锁的线程处于这一状态。(A thread that is blocked waiting for a monitor lock is in this state.)
xeyes命令
xeyes命令是一个图形显示程序。运行这个程序,你会看到一双萌萌的眼睛会一直盯着你。
安装 $ sudo apt-get install xeyes
运行 $ xeyes
linux中 ">" 和 ">>" 的作用是什么
然后通过xftp进行导出到桌面即可。
XmanagerEnterprise是一个简单易用的高性能的运行在Windows平台上的X Server软件。就像运行在PC上的任何Windows应用程序一样,它可以无缝拼接到UNIX 应用程序中。在UNIX/Linux和Windows网络环境中,Xmanager 是最好的连通解决方案。
Xmanager包含一组工具Xbrowser,Xshell,Xftp等
1、Xbrowser可以远程访问linux/unix的X window桌面,类似windows的远程桌面。
2、Xshell可以替代SecureCRT和putty。
通过telnet,ssh等方式访问linux/unix/windows等服务器。
3、Xftp可以当作ftp客户端,访问ftp,sftp
现在是cpu使用率特别高,如何定位问题?
redis所在的服务器cpu使用率很低,但是api-ws的使用率特别高,监控它的jvm进程。打印内存快照。
token失效后,会被删除,需要用户重新进行登陆。所有接口都需要进行验证。
查密码的地方 config上面几乎有所有的配置,在配置文件中获取密码、注册中心等。
redis的性能瓶颈,不现实啊。很能抗事的。
jps java proecees
top 监控服务器性能的命令
top -Hp pid 显示某一个进程中所有的线程。
java的项目因为基于jvm运行,所以查看线程的状态非常容易。直接用jstack就OK了~
将线程的状态输出到jts.log文件
看看有没有自己的代码引起的线程阻塞,可以直接在里面搜自己的代码包名,比如 com.xxx,这个时候如果有的话,就可以直接定位到哪个method了。
如何把内存中线程信息输出到txt文件中?
jstack -F pid > file.txt 显示进程中所有的线程信息。(stack)栈信息,并搜索jar包。显示线程代码。
thread_in_vm: 在运行JVM本身的代码
thread_in_native: 在运行native代码
thread_blocked: 线程被阻塞了,包括等待一个锁,等待一个条件,sleep,执行一个阻塞的IO等。
jmap -heap 26647 查看堆内存的信息。堆内存,文字统计。
cat proc/cpunfo
jstat命令可以查看堆内存各部分的使用量
jstat -gcutil -h 10 pid 1000 :jstat命令分析java程序内存回收状况
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
top命令使用总结
第一行:
当前系统时间( 如何查看当前时间?),
系统已经运行了10天3小时5分钟(在这期间没有重启过)(天,小时,分钟)
1 user 当前有几个用户登陆系统。现在在线的用户人数
load average:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks 任务(进程),系统现在共有135个进程,其中处于运行中的有1个,134个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
99.7% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
第四行:内存状态
3808060k total — 物理内存总量(4GB) 系统内存大小
3660048k used — 使用中的内存总量
148012k free — 空闲内存总量(148M)
使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
虚拟内存
Swap分区,即交换区,系统在物理内存(这里应该是运行内存)不够时,与Swap进行交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。
0k used — 使用的交换区总量(0M)
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者,哪个用户启动的当前进程?