性能监控与服务器监控

数据库性能监控工具的使用

 

如何查看数据库的健康状况?

使用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 — 进程所有者,哪个用户启动的当前进程?

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(服务器端)