Linux服务器性能调优
性能:瓶颈定位
问题举例及实例讲解:内存不足、CPU 不够、连接数太多、TIME_WAIT太多、 句柄数太多、IO太多 上面每种情况,一个截图来说明
[hepengfei@test12 tmp]# top top - 17:43:27 up 115 days, 19:38, 1 user, load average: 12.68, 12.19, 12.58 Tasks: 136 total, 6 running, 129 sleeping, 0 stopped, 1 zombie Cpu(s): 47.9%us, 7.0%sy, 0.0%ni, 23.1%id, 13.5%wa, 0.2%hi, 8.2%si, 0.0%st Mem: 16426616k total, 16373692k used, 52924k free, 68104k buffers Swap: 20972848k total, 5401524k used, 15571324k free, 7799216k cached
[hepengfei@test12 tmp]# top top - 15:36:25 up 31 days, 8:27, 5 users, load average: 9.10, 10.58, 10.51 Tasks: 213 total, 2 running, 209 sleeping, 0 stopped, 2 zombie Cpu0 : 13.7%us, 15.7%sy, 0.1%ni, 68.3%id, 2.1%wa, 0.0%hi, 0.1%si, 0.0%st Cpu1 : 18.1%us, 16.9%sy, 0.0%ni, 60.0%id, 3.0%wa, 0.1%hi, 1.8%si, 0.0%st Cpu2 : 17.3%us, 15.6%sy, 0.0%ni, 62.1%id, 3.0%wa, 0.1%hi, 1.9%si, 0.0%st Cpu3 : 16.9%us, 15.1%sy, 0.0%ni, 62.7%id, 2.3%wa, 0.1%hi, 2.9%si, 0.0%st Cpu4: 18.1%us, 14.7%sy, 0.0%ni, 47.4%id, 15.5%wa, 0.2%hi, 4.0%si, 0.0%st Cpu5 : 17.7%us, 16.4%sy, 0.0%ni, 50.3%id, 13.3%wa, 0.3%hi, 2.1%si, 0.0%st Cpu6 : 19.2%us, 14.5%sy, 0.0%ni, 47.5%id, 14.3%wa, 0.2%hi, 4.2%si, 0.0%st Cpu7 : 18.8%us, 13.7%sy, 0.0%ni, 48.2%id, 14.6%wa, 0.2%hi, 4.4%si, 0.0%st Mem: 16411876k total, 11161960k used, 5249916k free, 6280k buffers Swap: 10482404k total, 5117080k used, 5365324k free, 780392k cached
性能:瓶颈定位
问题举例及实例讲解:内存不足、CPU 不够、连接数太多、半开连接数太多、句 柄数太多、IO太多 上面每种情况,一个截图来说明
USER root root root root root root root root root root root root PR 15 15 15 15 15 15 15 15 15 18 15 15
步骤5 RPC
步骤4 CPU
步骤3 DB(mysql)
服务器:架构
传统架构
线程0 步骤0 net IO(epoll) 步骤1 disk IO
…
…
步骤5 RPC
线程1
步骤0 net IO(epoll)
步骤0 net IO(epoll)
步骤1 disk 骤5 RPC
步骤5 RPC
free df
三大 核心
存储
IO
性能:瓶颈定位
CPU/内存:free,vmstat,top IO: iostat,netstat(EST<2w,SYN<1k,TIME_W AIT<10),tcpdump,lsof,vnstat,ifconfig,etht ool 进程:strace,ltrace,ps
优点:开发量大,容错性强,高性能,可扩展性好;开发简单,不容易出错 缺点:逻辑不直观,
性能:指标
吞吐量
Throughput
延迟
Latency
性能:指标
吞吐量
Throughput
延迟
Latency
并发量
时
间
性能:指标
吞吐量
Throughput
延迟
Latency
个/秒
秒/个
性能:指标
吞吐量
Throughput
PID 10686 538 8724 3472 23927 5060 9243 31843 6303 4318 23731 23604
NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 0 8624m 8.1g 1764 S 2.0 52.0 33:59.84 res_del 0 927m 342m 3052 S 0.0 2.1 0:01.37 scene 0 705m 305m 2788 S 0.0 1.9 0:11.09 btbox 0 831m 228m 1876 S 0.0 1.4 209:36.40 gdrive.gim 0 672m 103m 3532 S 2.0 0.6 218:55.67 gdrive.gdm_pt 0 463m 51m 1932 S 0.0 0.3 349:51.92 gsmReport 0 2766m 42m 2812 S 0.0 0.3 110:13.83 client_interfac 0 2769m 39m 2868 S 0.0 0.2 105:05.03 client_interfac 0 519m 27m 744 S 0.0 0.2 237:24.72 httpsqs 0 298m 21m 1532 S 4.0 0.1 2057:35 named 0 149m 18m 2340 S 0.0 0.1 29:17.59 gcid_checker.rb 0 149m 18m 2340 S 0.0 0.1 31:11.30 gcid_checker.rb
热身讨论
服务器由什么组成?
如何最大化服务器性能?
服务器:核心
CPU
三大 核心
存储
IO
服务器:配合
CPU
性能
最大化
存储 IO
服务器:架构
架构
服务器:架构
接入 逻辑 代理 数据 控制 数据
服务器:架构
常用架构讲解
服务器:架构
任务/操作序列
步骤0 net IO(epoll) 步骤1 disk IO 步骤2 CPU
[root@test12 tmp]# netstat -anp | gawk '{print $6}' | sort | uniq -c | sort -nr | head 8733 TIME_WAIT 2433 ESTABLISHED 157 LAST_ACK 120 FIN_WAIT1 29 CLOSE_WAIT 21 FIN_WAIT2 19 CLOSING 10 SYN_RECV 10 LISTEN 2 SYN_SENT
PR NI VIRT RES SHR S %CPU %MEM TIME+CPU COMMAND 问题举例及实例讲解:内存不足、 25 0 488m 180m 4160 R 92.7 1.1 290:41.36 ffmpeg_new 不够、连接数太多、半开连接数太多、句 18 0 294m 76m 3056 R 88.4 0.5 1:50.86 videotext_detec 19 0 421m 115m 4168 R 86.4 0.7 1:06.23 ffmpeg_new 柄数太多、 IO 太多 15 0 2204m 859m 63m R 55.5 5.4 25724:51 chunk_server 15 0 6480m 2.2g 2576 S 54.8 14.2 69143:39 http_down_443 15 0 3738m 1.9g 3240 R 52.8 11.8 4282:14 vip_cdn 上面每种情况,一个截图来说明 15 10 10 15 10 15 RT 34 RT RT 34 RT RT 0 5771m 1.9g 2476 S 47.5 11.9 -5 0 0 0 S 1.7 0.0 -5 0 0 0 S 1.3 0.0 0 1857m 103m 2944 S 1.3 0.6 -5 0 0 0 S 0.3 0.0 0 10348 588 556 S 0.0 0.0 -5 0 0 0 S 0.0 0.0 19 0 0 0 S 0.0 0.0 -5 0 0 0 S 0.0 0.0 -5 0 0 0 S 0.0 0.0 19 0 0 0 S 0.0 0.0 -5 0 0 0 S 0.0 0.0 -5 0 0 0 S 0.0 0.0 70235:04 1805:47 1473:22 3327:59 28:34.76 4:25.55 0:15.18 0:15.92 0:00.00 0:06.24 0:00.95 0:00.00 0:13.28 http_down kswapd1 kswapd0 gdrive.store.no kjournald init migration/0 ksoftirqd/0 watchdog/0 migration/1 ksoftirqd/1 watchdog/1 migration/2
性能:瓶颈定位
问题举例及实例讲解:内存不足、CPU 不够、连接数太多、半开连接数太多、句 柄数太多、IO太多 上面每种情况,一个截图来说明