{"id":2078,"date":"2012-09-15T10:15:04","date_gmt":"2012-09-15T02:15:04","guid":{"rendered":"https:\/\/kyle.ai\/blog\/?p=2078"},"modified":"2013-11-21T18:24:15","modified_gmt":"2013-11-21T10:24:15","slug":"linux-system-and-performance-monitoring%e6%80%bb%e7%bb%93%e7%af%87","status":"publish","type":"post","link":"https:\/\/kyle.ai\/blog\/2078.html","title":{"rendered":"Linux System and Performance Monitoring(\u603b\u7ed3\u7bc7)"},"content":{"rendered":"<p>\u9644\u5f55 A: \u6848\u4f8b\u5b66\u4e60 \u2013 \u6027\u80fd\u76d1\u63a7\u4e4b\u5faa\u5e8f\u6e10\u8fdb<\/p>\n<p>\u67d0\u4e00\u5929,\u4e00\u4e2a\u5ba2\u6237\u6253\u7535\u8bdd\u6765\u9700\u8981\u6280\u672f\u5e2e\u52a9,\u5e76\u62b1\u6028\u5e73\u5e3815\u79d2\u5c31\u53ef\u4ee5\u6253\u5f00\u7684\u7f51\u9875\u73b0\u5728\u9700\u898120\u5206\u949f\u624d\u53ef\u4ee5\u6253\u5f00.<br \/>\n\u5177\u4f53\u7cfb\u7edf\u914d\u7f6e\u5982\u4e0b:<\/p>\n<p>RedHat Enterprise Linux 3 update 7<br \/>\nDell 1850 Dual Core Xenon Processors, 2 GB RAM, 75GB 15K Drives<br \/>\nCustom LAMP software stack(\u8bd1\u6ce8:Llinux+apache+mysql+php \u73af\u5883)<\/p>\n<p>\u6027\u80fd\u5206\u6790\u4e4b\u6b65\u9aa4\uff1a<\/p>\n<p>1. \u9996\u5148\u4f7f\u7528vmstat \u67e5\u770b\u5927\u81f4\u7684\u7cfb\u7edf\u6027\u80fd\u60c5\u51b5:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# vmstat 1 10\r\nprocs memory swap io system cpu\r\nr b swpd free buff cache si so bi bo in cs us sy id wa\r\n1 0 249844 19144 18532 1221212 0 0 7 3 22 17 25 8 17 18\r\n0 1 249844 17828 18528 1222696 0 0 40448 8 1384 1138 13 7 65 14\r\n0 1 249844 18004 18528 1222756 0 0 13568 4 623 534 3 4 56 37\r\n2 0 249844 17840 18528 1223200 0 0 35200 0 1285 1017 17 7 56 20\r\n1 0 249844 22488 18528 1218608 0 0 38656 0 1294 1034 17 7 58 18\r\n0 1 249844 21228 18544 1219908 0 0 13696 484 609 559 5 3 54 38\r\n0 1 249844 17752 18544 1223376 0 0 36224 4 1469 1035 10 6 67 17\r\n1 1 249844 17856 18544 1208520 0 0 28724 0 950 941 33 12 49 7\r\n1 0 249844 17748 18544 1222468 0 0 40968 8 1266 1164 17 9 59 16\r\n1 0 249844 17912 18544 1222572 0 0 41344 12 1237 1080 13 8 65 13\r\n<\/pre>\n<p>\u5206\u6790:<\/p>\n<p>1,\u4e0d\u4f1a\u662f\u5185\u5b58\u4e0d\u8db3\u5bfc\u81f4,\u56e0\u4e3aswapping \u59cb\u7ec8\u6ca1\u53d8\u5316(si \u548c so).\u5c3d\u7ba1\u7a7a\u95f2\u5185\u5b58\u4e0d\u591a(free),\u4f46swpd \u4e5f\u6ca1\u6709\u53d8\u5316.<br \/>\n2,CPU \u65b9\u9762\u4e5f\u6ca1\u6709\u592a\u5927\u95ee\u9898,\u5c3d\u7ba1\u6709\u4e00\u4e9b\u8fd0\u884c\u961f\u5217(procs r),\u4f46\u5904\u7406\u5668\u8fd8\u59cb\u7ec8\u670950% \u591a\u7684idle(CPU id).<br \/>\n3,\u6709\u592a\u591a\u7684\u4e0a\u4e0b\u6587\u5207\u6362(cs)\u4ee5\u53cadisk block\u4eceRAM\u4e2d\u88ab\u8bfb\u5165(bo).<br \/>\n4,CPU \u8fd8\u6709\u5e73\u574720% \u7684I\/O \u7b49\u5f85\u60c5\u51b5.<\/p>\n<p>\u7ed3\u8bba:<\/p>\n<p>\u4ece\u4ee5\u4e0a\u603b\u7ed3\u51fa,\u8fd9\u662f\u4e00\u4e2aI\/O \u74f6\u9888.<\/p>\n<p>2. \u7136\u540e\u4f7f\u7528iostat \u68c0\u67e5\u662f\u8c01\u5728\u53d1\u51faIO \u8bf7\u6c42:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# iostat -x 1\r\nLinux 2.4.21-40.ELsmp (mail.example.com) 03\/26\/2007\r\navg-cpu: %user %nice %sys %idle\r\n30.00 0.00 9.33 60.67\r\nDevice: rrqm\/s wrqm\/s r\/s w\/s rsec\/s wsec\/s rkB\/s wkB\/s avgrq-sz avgqu-sz await svctm %util\r\n\/dev\/sda 7929.01 30.34 1180.91 14.23 7929.01 357.84 3964.50 178.92 6.93 0.39 0.03 0.06 6.69\r\n\/dev\/sda1 2.67 5.46 0.40 1.76 24.62 57.77 12.31 28.88 38.11 0.06 2.78 1.77 0.38\r\n\/dev\/sda2 0.00 0.30 0.07 0.02 0.57 2.57 0.29 1.28 32.86 0.00 3.81 2.64 0.03\r\n\/dev\/sda3 7929.01 24.58 1180.44 12.45 7929.01 297.50 3964.50 148.75 6.90 0.32 0.03 0.06 6.68\r\navg-cpu: %user %nice %sys %idle\r\n9.50 0.00 10.68 79.82\r\nDevice: rrqm\/s wrqm\/s r\/s w\/s rsec\/s wsec\/s rkB\/s wkB\/s avgrq-sz avgqu-sz await svctm %util\r\n\/dev\/sda 0.00 0.00 1195.24 0.00 0.00 0.00 0.00 0.00 0.00 43.69 3.60 0.99 117.86\r\n\/dev\/sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00\r\n\/dev\/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00\r\n\/dev\/sda3 0.00 0.00 1195.24 0.00 0.00 0.00 0.00 0.00 0.00 43.69 3.60 0.99 117.86\r\navg-cpu: %user %nice %sys %idle\r\n9.23 0.00 10.55 79.22\r\nDevice: rrqm\/s wrqm\/s r\/s w\/s rsec\/s wsec\/s rkB\/s wkB\/s avgrq-sz avgqu-sz await svctm %util\r\n\/dev\/sda 0.00 0.00 1200.37 0.00 0.00 0.00 0.00 0.00 0.00 41.65 2.12 0.99 112.51\r\n\/dev\/sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00\r\n\/dev\/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00\r\n\/dev\/sda3 0.00 0.00 1200.37 0.00 0.00 0.00 0.00 0.00 0.00 41.65 2.12 0.99 112.51\r\n<\/pre>\n<p>\u5206\u6790:<\/p>\n<p>1,\u770b\u4e0a\u53bb\u53ea\u6709\/dev\/sda3 \u5206\u533a\u5f88\u6d3b\u8dc3,\u5176\u4ed6\u5206\u533a\u90fd\u5f88\u7a7a\u95f2.<br \/>\n2,\u5dee\u4e0d\u591a\u67091200 \u8bfbIOPS,\u78c1\u76d8\u672c\u8eab\u662f\u652f\u6301200 IOPS\u5de6\u53f3(\u8bd1\u6ce8:\u53c2\u8003\u4e4b\u524d\u7684IOPS \u8ba1\u7b97\u516c\u5f0f).<br \/>\n3,\u6709\u8d85\u8fc72\u79d2,\u5b9e\u9645\u4e0a\u6ca1\u6709\u4e00\u4e2a\u8bfb\u78c1\u76d8(rkb\/s).\u8fd9\u548c\u5728vmstat \u770b\u5230\u6709\u5927\u91cfI\/O wait\u662f\u6709\u5173\u7cfb\u7684.<br \/>\n4,\u5927\u91cf\u7684read IOPS(r\/s)\u548c\u5728vmstat \u4e2d\u5927\u91cf\u7684\u4e0a\u4e0b\u6587\u662f\u5339\u914d\u7684.\u8fd9\u8bf4\u660e\u5f88\u591a\u8bfb\u64cd\u4f5c\u90fd\u662f\u5931\u8d25\u7684.<\/p>\n<p>\u7ed3\u8bba:<\/p>\n<p>\u4ece\u4ee5\u4e0a\u603b\u7ed3\u51fa,\u90e8\u5206\u5e94\u7528\u7a0b\u5e8f\u5e26\u6765\u7684\u8bfb\u8bf7\u6c42,\u5df2\u7ecf\u8d85\u51fa\u4e86I\/O \u5b50\u7cfb\u7edf\u53ef\u5904\u7406\u7684\u8303\u56f4.<\/p>\n<p>3. \u4f7f\u7528top \u6765\u67e5\u627e\u7cfb\u7edf\u6700\u6d3b\u8dc3\u7684\u5e94\u7528\u7a0b\u5e8f<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# top -d 1\r\n11:46:11 up 3 days, 19:13, 1 user, load average: 1.72, 1.87, 1.80\r\n176 processes: 174 sleeping, 2 running, 0 zombie, 0 stopped\r\nCPU states: cpu user nice system irq softirq iowait idle\r\ntotal 12.8% 0.0% 4.6% 0.2% 0.2% 18.7% 63.2%\r\ncpu00 23.3% 0.0% 7.7% 0.0% 0.0% 36.8% 32.0%\r\ncpu01 28.4% 0.0% 10.7% 0.0% 0.0% 38.2% 22.5%\r\ncpu02 0.0% 0.0% 0.0% 0.9% 0.9% 0.0% 98.0%\r\ncpu03 0.0% 0.0% 0.0% 0.0% 0.0% 0.0% 100.0%\r\nMem: 2055244k av, 2032692k used, 22552k free, 0k shrd, 18256k buff\r\n1216212k actv, 513216k in_d, 25520k in_c\r\nSwap: 4192956k av, 249844k used, 3943112k free 1218304k cached\r\nPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND\r\n14939 mysql 25 0 379M 224M 1117 R 38.2 25.7% 15:17.78 mysqld\r\n4023 root 15 0 2120 972 784 R 2.0 0.3 0:00.06 top\r\n1 root 15 0 2008 688 592 S 0.0 0.2 0:01.30 init\r\n2 root 34 19 0 0 0 S 0.0 0.0 0:22.59 ksoftirqd\/0\r\n3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog\/0\r\n4 root 10 -5 0 0 0 S 0.0 0.0 0:00.05 events\/0\r\n<\/pre>\n<p>\u5206\u6790:<\/p>\n<p>1,\u5360\u7528\u8d44\u6e90\u6700\u591a\u7684\u597d\u50cf\u5c31\u662fmysql \u8fdb\u7a0b,\u5176\u4ed6\u90fd\u5904\u4e8e\u5b8c\u5168idle \u72b6\u6001.<br \/>\n2,\u5728top(wa) \u770b\u5230\u7684\u6570\u503c,\u548c\u5728vmstat \u770b\u5230\u7684wio \u6570\u503c\u662f\u6709\u5173\u8054\u7684.<\/p>\n<p>\u7ed3\u8bba:<\/p>\n<p>\u4ece\u4ee5\u4e0a\u603b\u7ed3\u51fa,\u4f3c\u4e4e\u5c31\u53ea\u6709mysql \u8fdb\u7a0b\u5728\u8bf7\u6c42\u8d44\u6e90,\u56e0\u6b64\u53ef\u4ee5\u63a8\u8bba\u5b83\u5c31\u662f\u5bfc\u81f4\u95ee\u9898\u7684\u5173\u952e.<\/p>\n<p>4. \u73b0\u5728\u5df2\u7ecf\u786e\u5b9a\u662fmysql \u5728\u53d1\u51fa\u8bfb\u8bf7\u6c42,\u4f7f\u7528strace \u6765\u68c0\u67e5\u5b83\u5728\u8bfb\u8bf7\u6c42\u4ec0\u4e48.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# strace -p 14939\r\nProcess 14939 attached - interrupt to quit\r\nread(29, &quot;\\3\\1\\237\\1\\366\\337\\1\\222%\\4\\2&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;012P\/d&quot;, 20) = 20\r\nread(29, &quot;ata1\/strongmail\/log\/strongmail-d&quot;..., 399) = 399\r\n_llseek(29, 2877621036, &#x5B;2877621036], SEEK_SET) = 0\r\nread(29, &quot;\\1\\1\\241\\366\\337\\1\\223%\\4\\2&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;012P\/da&quot;, 20) = 20\r\nread(29, &quot;ta1\/strongmail\/log\/strongmail-de&quot;..., 400) = 400\r\n_llseek(29, 2877621456, &#x5B;2877621456], SEEK_SET) = 0\r\nread(29, &quot;\\1\\1\\235\\366\\337\\1\\224%\\4\\2&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;012P\/da&quot;, 20) = 20\r\nread(29, &quot;ta1\/strongmail\/log\/strongmail-de&quot;..., 396) = 396\r\n_llseek(29, 2877621872, &#x5B;2877621872], SEEK_SET) = 0\r\nread(29, &quot;\\1\\1\\245\\366\\337\\1\\225%\\4\\2&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;012P\/da&quot;, 20) = 20\r\nread(29, &quot;ta1\/strongmail\/log\/strongmail-de&quot;..., 404) = 404\r\n_llseek(29, 2877622296, &#x5B;2877622296], SEEK_SET) = 0\r\nread(29, &quot;\\3\\1\\236\\2\\366\\337\\1\\226%\\4\\2&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;&#92;&#48;012P\/d&quot;, 20) = 20\r\n<\/pre>\n<p>\u5206\u6790:<\/p>\n<p>1,\u5927\u91cf\u7684\u8bfb\u64cd\u4f5c\u90fd\u5728\u4e0d\u65ad\u5bfb\u9053\u4e2d,\u8bf4\u660emysql \u8fdb\u7a0b\u4ea7\u751f\u7684\u662f\u968f\u673aIO.<br \/>\n2,\u770b\u4e0a\u53bb\u4f3c\u4e4e\u662f,\u67d0\u4e00sql \u67e5\u8be2\u5bfc\u81f4\u8bfb\u64cd\u4f5c.<\/p>\n<p>\u7ed3\u8bba:<\/p>\n<p>\u4ece\u4ee5\u4e0a\u603b\u7ed3\u51fa,\u6240\u6709\u7684\u8bfbIOPS \u90fd\u662fmysql \u8fdb\u7a0b\u5728\u6267\u884c\u67d0\u4e9b\u8bfb\u67e5\u8be2\u65f6\u4ea7\u751f\u7684.<\/p>\n<p>5. \u4f7f\u7528mysqladmin \u547d\u4ee4,\u6765\u67e5\u627e\u662f\u54ea\u4e2a\u6162\u67e5\u8be2\u5bfc\u81f4\u7684.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# .\/mysqladmin -pstrongmail processlist\r\n+----+------+-----------+------------+---------+------+----------+----------------------------------------\r\n| Id | User | Host | db | Command | Time | State | Info\r\n+----+------+-----------+------------+---------+------+----------+----------------------------------------\r\n| 1 | root | localhost | strongmail | Sleep | 10 | |\r\n| 2 | root | localhost | strongmail | Sleep | 8 | |\r\n| 3 | root | localhost | root | Query | 94 | Updating | update `failures` set\r\n`update_datasource`='Y' where database_id='32' and update_datasource='N' and |\r\n| 14 | root | localhost | | Query | 0 | | show processlist\r\n<\/pre>\n<p>\u5206\u6790:<\/p>\n<p>1,MySQL \u6570\u636e\u5e93\u91cc,\u4f3c\u4e4e\u5728\u4e0d\u65ad\u7684\u8fd0\u884ctable update\u67e5\u8be2.<br \/>\n2,\u57fa\u4e8e\u8fd9\u4e2aupdate \u67e5\u8be2,\u6570\u636e\u5e93\u662f\u5bf9\u6240\u6709\u7684table \u8fdb\u884c\u7d22\u5f15.<\/p>\n<p>\u7ed3\u8bba:<\/p>\n<p>\u4ece\u4ee5\u4e0a\u603b\u7ed3\u51fa,MySQL\u91cc\u8fd9\u4e9bupdate \u67e5\u8be2\u95ee\u9898,\u90fd\u662f\u5728\u5c1d\u8bd5\u5bf9\u6240\u6709table \u8fdb\u884c\u7d22\u5f15.\u8fd9\u4e9b\u4ea7\u751f\u7684\u8bfb\u8bf7\u6c42\u6b63\u662f\u5bfc\u81f4\u7cfb\u7edf\u6027\u80fd\u4e0b\u964d\u7684\u539f\u56e0.<\/p>\n<p>\u540e\u7eed<\/p>\n<p>\u628a\u4ee5\u4e0a\u8fd9\u4e9b\u6027\u80fd\u4fe1\u606f\u79fb\u4ea4\u7ed9\u4e86\u76f8\u5173\u5f00\u53d1\u4eba\u5458,\u7528\u4e8e\u5206\u6790\u4ed6\u4eec\u7684PHP \u4ee3\u7801.\u4e00\u4e2a\u5f00\u53d1\u4eba\u5458\u5bf9\u4ee3\u7801\u8fdb\u884c\u4e86\u4e34\u65f6\u6027\u4f18\u5316.\u67d0\u4e2a\u67e5\u8be2\u5982\u679c\u51fa\u9519\u4e86,\u4e5f\u6700\u591a\u5230100K\u8bb0\u5f55.\u6570\u636e\u5e93\u672c\u8eab\u8003\u8651\u6700\u591a\u5b58\u57284\u767e\u4e07\u8bb0\u5f55.\u6700\u540e,\u8fd9\u4e2a\u67e5\u8be2\u4e0d\u4f1a\u518d\u7ed9\u6570\u636e\u5e93\u5e26\u6765\u8d1f\u62c5\u4e86.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9644\u5f55 A: \u6848\u4f8b\u5b66\u4e60 \u2013 \u6027\u80fd\u76d1\u63a7\u4e4b\u5faa\u5e8f\u6e10\u8fdb \u67d0\u4e00\u5929,\u4e00\u4e2a\u5ba2\u6237\u6253\u7535\u8bdd\u6765\u9700\u8981\u6280\u672f\u5e2e\u52a9,\u5e76\u62b1\u6028\u5e73\u5e3815\u79d2\u5c31\u53ef\u4ee5\u6253\u5f00 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2078","post","type-post","status-publish","format-standard","hentry","category-skill"],"_links":{"self":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/2078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/comments?post=2078"}],"version-history":[{"count":2,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/2078\/revisions"}],"predecessor-version":[{"id":5011,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/2078\/revisions\/5011"}],"wp:attachment":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/media?parent=2078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/categories?post=2078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/tags?post=2078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}