常用命令[]
cp
Copy
mv
移动、重命名
yum
yum nstall xxx
rm
rm –rf xx
mkdir
建目录
rpm
rpm –ivh xxx.rpm
tail
tail –f rr.log
find
find /usr/local -name xxx
tar
①tar xzvf xxxx.ta.gz
rz
上传文件
sz
下载
②cd xxx
./configure
./configure –prefix=/user/local[指定目录]加参数
wc
行、字、字节数
chmod
chmod 777 –R xxx
head
head -3 sqlq.log
ps
ps –ef|more
kill
ps -ef | grep xx
kill -9 [xxPID]
③make && make install
grep
查找
vi /etc/profile 最下面配置环境变量
因素factor
描述
备注
监测monitor
CPU
/proc/cpuinfo
等待执行的队列中进程数+
等待uninterruptable task完成的进程数
cpu负荷的趋势.
top
Procs
Runnable,ready to run(running / waiting for runtime)的进程数【可执行未执行的】
vmstat(r)
uninterruptible wait(通常因IO)进程数
vmstat(b)
System
线程的切换
减少程序无关的请求
vmstat(cs)
正在处理的中断数:
(hi)Hard interrupts、(si)soft interrupts
top (cpu--hi、si)
vmstat(in)
cpu
利用率
处理非内核操作的时间
User%+sys%
好(<70%)一般(85%)糟糕(>=90)
top
vmstat
iostat(avg-cpu)
处理内核操作的时间
等待io完成的时间
空闲时间
<5%-à充分利用
Nice time
处理re-nicing进程的时间
iostat(nice%)
CPU影响大是最误区,因为服务器的cpu一般是overconfigured。除非一些cpu密集使用的应用。
如果有多余的进程,可以ps –ef来停掉
CPU-intensive的进程,可以renice调整优先级
SMP-based使用taskset来将进程绑定cpu,避免来回切换
最新驱动和防火墙,减少对cpu的负载。
1、us% or sy%高,使用命令top;
1.1.1 、us%高,看看是哪个任务/线程的占用高,使用top排序或者ps –ef查看
1.1.2、了解线程的作用,可使用strace 查看该进程的执行情况,分析是否有异常,是否需要调整。
1.2.1、sy%高,查看memory、io方面性能,使用vmstat、iostat命令。
1.2.2、memory方面的问题,考虑是否要调整这方面的参数或增加内存
1.2.2、io方面的问题,考虑是否要增加快速的磁盘驱动等解决方案。
1.2.3、也要查看进程的占用情况,用strace查看该进程的执行情况,分析是否有异常,是否需要调整。
因素factor
描述
监测monitor
备注
Memory
/proc/meminfo
Linux把未使用的内存作为buffer和cache。
top(mem-free)
vmstat(free)
使用的swap space。
physical memory用完后,
将最近使用过,暂不使用的memory pages
从physical memory写到swap space。
表示剩余的可支配物理内存严重不足,需要通过与磁盘交换内容来保持系统稳定性;磁盘处理速度要远小于内存,值越大性能瓶颈越明显。
top(swap-used)
vmstat(swpd)
si 、so[à0好]:
swap频繁程度,长期很大,表示内存不够or未有效利用内存
不同步设备、优先级不同的设备间缓存
top(mem-buffers)
vmstat(buffer)
Cpu和主内存间高速文件缓存(cpu刚用过或循环使用的部分数据,cpu再用时就从cache调用)
top(swap-cached)
vmstat(cache)
Slabs
内核使用
vmstat –m
Active\inactive memory
活跃和不活跃的内存大小
vmstat -a
free↓,swpd↑(si、so↑),bi 、bo↑,in↑,cs↑、b↑,wa↑
测试期间,保持内存充足,可用内存>20%
调整swap space,使用大页面,大块内存,共享内存;
调整页面的大小;
改进对活动和非活动内存的处理;
调整换页率page-out rate.;
限制服务器上每个用户的可用资源;
停掉不需要的服务; 增加内存;
因素
描述
监测monitor
I/O
等待
等待io操作的时间
好(<20%)一般(=35%)糟糕(>=50%)
iostat(avg-cpu:iowait)
Average wait
实际的io操作时间svctm +
+在io队列中等待时间
Svctm越接近awai越好
iostat –x (await)
Average queue length
Io请求队列长度
iostat –x (avgqu-sz)
请求数
Tps
每秒处理的io操作数量。
iostat (tps)
每秒读、写请求数
iostat –x(r/s 、w/s)
或用rrqm/s 、wrqm/s(合并请求)考察
数据量
读、写磁盘的块数(block/s)
vmstat(bi、bo)
iostat(Blk_read、BLk_wrtn)
或用kb、mb做单位考察总读写量
每秒对设备读、写数量Kb/s
iostat (Kb_read/s、Kb_wrtn/s)
或用MB、块、扇区做单位考察每秒读写量
(%util↑)设备繁忙、(await>>svctm)IO请求等待时间长,(avgqu-sz↑)等待队列长度大。
少量的大容量磁盘、减少逻辑盘;
序列式且控制器的带宽压力大,添加更快的磁盘控制器;随机式,增加磁盘驱动;
Raid环境中,添加磁盘驱动; 增加RAM;
因素factor
描述
备注
监测monitor
Network
查看网络流量
watch –n 1 “/sbin/ifconfig eth0|grep bytes”
外网:
tx 发送[transport]
rx 接收[receive]
内网相反。
date;ifconfig eth0 显示当前日期下网卡网络情况
调整网络配置; 换网卡、加更快的网卡。
修改ipv4 tcp的内核参数;
使用netstat –ae|grep “TIME_WAIT”|wc –l #查看多少个TIME_WAIT
[往往是因为程序代码中未关闭mysql连接netstat -ae |grep mysql]。
解决方法:
调整内核参数:vi /etc/sysctl.conf
加入以下内容, 修改后,执行/sbin/sysctl –p 让参数生效:
net.ipv4.tcp_syncookies=1
#开启SYN Cookies。当SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认0(关闭)
net.ipv4.tcp_tw_reuse=1 #开启重用。允许将TIME-WAIT socket重用于新的TCP连接,默认0(关闭)
net.ipv4.tcp_tw_recycle=1 #开始TCP连接中TIME-WAIT socket的快递回收,默认0(关闭)
net.ipv4.tcp_fin_timeout=30 #修改系统默认的TIME_OUT时间
net.ipv4.tcp_keepalive_probes=5 #减少超时前的探测次数
net.ipv4.tcp_keepalive_intvl=20 #探测消息发送频率
net.ipv4.tcp_keepalive_time=1200
#表示当keepalive启用时,TCP发送的keepalive消息的频率。缺省值为2小时,修改为2分钟。
net.ipv4.ip_local_port_range=1024 65000
#用于向外连接的端口范围。缺省情况很小为32768到61000,改为1024到65000
net.ipv4.tcp_max_syn_backlog=8192
#SYN队列的长度,默认为1024,加大了队列的长度为8192,可容纳更多等待连接的网络连接数
net.ipv4.tcp_max_tw_buckets=5000
#同时保持TIME_WAIT的最大数量,如超出,立刻清除TIME_WAIT、打印警告信息。默认180000,改为5000
Use the monitoring tools to to narrow down the bottleneck to the subsystem level.
top
动态\实时的运行情况
当前活跃的进程信息
参数:top –u root(看这user是这root的)、top –p 123(看pid123的)
汇总信息
运行时间
当前时间\运行时间\用户数
平均负载(1min、5min、15min),后两个时间段是重要的
task和cpu
Task:running; sleeping; stopped; zombiecpu间隔内情况,多核(按1):
us、sy、id、wa、ni、hi(硬件中断)、si(软件中断)、st(stolen)
Memory Usage
物理内存和虚拟内存情况
输入行
k:kill
r:renice(调整任务优先级)
o:列的顺序
f:显示哪些列
u:筛选user
i:忽略空闲和僵死进程
M:驻留内存大小(res)排序
P: %cpu排序
T: time排序
q:quit
A:
S:
列和Task
PID
PPID
S
进程id
父进程id
进程状态: D=不可中断的睡眠状态、R=运行、 S=睡眠
T=跟踪/停止、Z=僵尸进程
COMMAND
命令名/命令行
UID
USER
RUSER
GROUP
进程所有者的用户id
进程所有者的用户名
Real user name
进程所有者的组名
PR
NI
优先级
nice值。负值表示高优先级,正值表示低优先级
%CPU
TIME
上次更新到现在的CPU时间占用百分比
进程使用的CPU时间总计,秒
%MEM
VIRT
SWAP
RES
CODE
DATA
进程使用的物理内存百分比
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
进程使用的虚拟内存中,SWAP SPACE大小, kb。
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
可执行代码占用的物理内存大小, kb
可执行代码以外的部分(数据段+栈)占用的物理内存大小, kb
nFLT
页面错误次数
nDRT
最后一次写入到现在,被修改过的页面数。
vmstat
vmstat [options] [delay [count]]第一个条是自开机到现在的平均值(不指定delay,仅显示此条)
下面的是delay时间间隔的抽样 ,procs、memory都是瞬时的情况
参数:vmstat –t(时间戳)
Procs
r
Runnable,ready to run(running / waiting for runtime)的进程数
B
uninterruptible wait(通常因为io)的进程数Memory
被用作Buffer的内存大小
被用作cache的内存大小
Swap
磁盘分页到内存memory Swapped in 大小(kb/s)
内存分页到磁盘memory Swapped out 大小。si so 趋于0,内存状态较好。
Io
读、写磁盘的块数(block/s)
System
每秒中断数
每秒上下文切换数
Cpu
Cpu时间%
St
Time stolen from a virtual machine
iostat
从开机到当前执行时刻的统计信息
参数:iostat –x(详细信息)
CPU
多核:平均
%user
Cpu处理非内核%
%nice
用户级别with a nice priority cpu使用%
%sys
内核使用cpu%
%idle
空闲时间的%
Device
Device
块设备名称
请求数
tps
对应设备的每秒Io请求数
rrqm/s
wrqm/s
每秒该设备的读、写请求被合并数
每秒读rio、写wio请求数
Blk_read/s
Blk_wrtn/s
Blk_read
BLk_wrtn
每秒读、写数据量(块数)。/读、写的总量。
Blk_read、BLk_wrtn从开机到现在 读写的总块数
块的大小:dumpe2fs –h /dev/sda1 |grep –F “Block size”
Kb_read/s
Kb_wrtn/s
Kb_read
Kb_wrtn
每秒读、写数据量(KB)/读、写的总量。----- iostat –k
rMB/s、wMB/s (MB) ----- iostat –m
rsec/s
Wsec/s
每秒读、写数据量(扇区)
Avgrq-sz
每个io请求的平均扇区数。
等待
r_await
w_await
平均每次设备i/o等待和操作的时间。
平均每次设备io操作时间(接近await表示等待越少)
Avgqu-sz
平均io队列长度。
设备繁忙程度(80%很忙)
strace
被进程调用的系统调用的执行情况,定位异常的具体位置。
先使用top命令定位异常的进程
strace –T –p [pid]
显示每次调用所耗时间
strace –c –p [pid]
strace –c find/etc –name xxx (strace –c <command>)
统计每一系统调用的内核执行时间、次数和出错次数等
netstat
各种网络相关信息,如网络连接,路由表,Interface Statistics\masquerade连接
Active Internet connections
Recv-Q
Send-Q
接收但未做处理的字节数。
发送但还未被确认的字节数。
一般应是0。大于0表示正在队列中堆积数据
Active
UNIX domain sockets
Proto
Proto显示连接使用的协议(tcp udp )
RefCnt
RefCnt表示连接到本套接口上的进程号
Types
Types显示套接口的类型
State
socket状态:
LISTEN(服务端socket正在监听)ESTABLISHED(已建立连接)
SYN_SENT(发送连接请求后等待匹配)SYN_RECV(收到连接请求等连接请求的确认)
FIN_WAIT1(发送中断请求后,等中断确认),FIN_WAIT2(收到ack后,稍后中断)
TIME_WAIT(收到fin、 ack,socket等关闭对剩余数据包的处理后再回复中断确认)
CLOSE_WAIT(收到fin后回复了ack,由本地确认是否关闭连接)
CLOSING(都中断了,但还有数据传输)
LAST_ACK(被动关闭在发送了fin后,再等待对方的ack,收到ack后关闭连接)
CLOSED(没有任何连接状态)unknown(未知)
Path
Path表示连接到套接口的其它进程使用的路径名。
-a (all)显示所有listen和non-listen,默认不显示listen
-t (tcp)仅显示tcp相关选项;-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立连接的pid和程序名 [root@centos0 xampp]# netstat -anp|grep mysql
-e 显示扩展信息,例如uid等netstat -ae |grep mysql
-s 按各个协议进行统计
-c 不停的刷新continuous listing。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
ps
详细的进程信息
Pstree\ \pmap
ps –elFL
F
Process flag
S
进程状态:
S=sleeping、R=runnig、T=stopped ortraced、D=interuptable sleep,Z=zombie
UID
PID
PPID
LWP
LWP[Light weight process,or thread]ID of the lwp being reported
C
Cpu利用率
NLWP
Number of lwps(threads)in the process
PRI
Priority of theprocess
NI
Niceness level
ADDR
Process address space【不显示的】
SZ
Code+data+stack 总的memory大小(kb)
WCHAN
Sleeping的Kernel function名。- 进程为运行,*多线程
RSS
驻留集大小、non-swapped物理内存使用大小
PSR
Processor that process is currently assigned to.
STIME
本次开始的时间
TTY
终端
TIME
自动启动占用的cpu时间
CMD
开启命令(有参数)
Ps –A :显示正在运行的所有进程
:
注:一点一点的调,调了用同一方式来衡量性能改变情况
修改各项配置相关信息前,要备份。记录每次修改,尤其是会影响其他方面的修改。
不要在生产环境调
调优完成后,继续监测其它指标,直到达到性能目标
调优后再评估性能情况,和基准对比。
ulimit –a #用来显示当前的各种用户进程限制。linux对每个用户、系统限制了最大的进程数。
vi /etc/profile
ulimit –u 10000 #用户的最大进程数
ulimit –n 4096 #每个进程可以打开的文件数
ulimit –d unlimited #数据段长度
ulimit –m unlimited #最大内存大小
ulimit –s unlimited #堆栈的大小
ulimit –t unlimited #cpu时间
ulimit –v unlimited#虚拟内存
解除linux系统的最大进程数和最大文件打开限制
vi /etc/security/limits.conf,添加以下内容,注意添加完成后重启
*代表所有用户,也可以指定用户;noproc 代表最大的进程数;nofile 代表最大文件打开数
* soft noproc 11000
*hard noproc 11000
*soft nofile 8192
*hard nofile 20480
命令: show status like '%下面变量%';
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量.
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数.
Connections 试图连接MySQL服务器的次数.
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量.
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量.
Delayed_writes 用INSERT DELAYED写入的行数.
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数.
Flush_commands 执行FLUSH命令的次数.
Handler_delete 请求从一张表中删除行的次数.
Handler_read_first 请求读入表中第一行的次数.
Handler_read_key 请求数字基于键读行.
Handler_read_next 请求读入基于一个键的一行的次数.
Handler_read_rnd 请求读入基于一个固定位置的一行的次数.
Handler_update 请求更新表中一行的次数.
Handler_write 请求向表中插入一行的次数.
Key_blocks_used 用于关键字缓存的块的数量.
Key_read_requests 请求从缓存读入一个键值的次数.
Key_reads 从磁盘物理读入一个键值的次数.
Key_write_requests 请求将一个关键字块写入缓存次数.
Key_writes 将一个键值块物理写入磁盘的次数.
Max_used_connections 同时使用的连接的最大数目.
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块.
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量.
Open_tables 打开表的数量.
Open_files 打开文件的数量.
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量.
Questions 发往服务器的查询的数量.
Slow_queries 要花超过long_query_time时间的查询数量.
Threads_connected 当前打开的连接的数量.
Threads_running 不在睡眠的线程数量.
Uptime 服务器工作了多少秒.
影响性能的因素 因素 1 : CPU 。 指标 度量。 平均负载 。 运行 队列。 阻止。 上下文切换。 中断 。 用户时间 。 系统时间 。转载于:https://www.cnblogs.com/stay-sober/p/4137389.html
