{"id":36547,"date":"2023-01-18T04:49:18","date_gmt":"2023-11-17T01:08:23","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/"},"modified":"2024-04-29T10:20:01","modified_gmt":"2024-04-29T02:20:01","slug":"apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/","title":{"rendered":"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f"},"content":{"rendered":"<h2>\u5173\u4e8eMaxClients\u548cMaxRequestWorkers\u7684\u63d0\u53ca<\/h2>\n<p>\u8bf7\u6309\u65f6\u95f4\u987a\u5e8f\u603b\u7ed3\u6709\u5173 Apache \u7684 MaxClients \/ MaxRequestWorkers \u9002\u5f53\u503c\u7684\u8a00\u53ca\u3002\u656c\u79f0\u7565\u3002<br \/>\n\u5982\u679c\u8fd8\u6709\u5176\u4ed6\u91cd\u8981\u7684\u7f51\u9875\u63d0\u5230\uff0c\u8bf7\u544a\u77e5\u3002<\/p>\n<h3>2002\/07\/23 \u4e00\u5fd7\u9054\u4e5f\uff08TIS\u682a\u5f0f\u4f1a\u793e\uff09:<\/h3>\n<p>2002\u5e747\u670823\u65e5\uff0c\u4e00\u5fd7\u9054\u4e5f\uff08TIS\u682a\u5f0f\u4f1a\u793e\uff09\u3002<\/p>\n<p>Apache\u901a\u8fc7\u6784\u5efaWeb\u670d\u52a1\u5668\uff0816\uff09\uff1aApache\u6027\u80fd\u8c03\u4f18\u5b9e\u8df5\uff082\/2\uff09- \uff20IT<\/p>\n<blockquote><p>\u7528\u4e8e\u9650\u5236\u8fdb\u7a0b\u6570\u7684\u6307\u4ee4\u662f&#8221;MaxClients&#8221;\u3002\u8be5\u6307\u4ee4\u7528\u4e8e\u6307\u5b9a\u540c\u65f6\u53ef\u4ee5\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\uff08\u4e25\u683c\u6765\u8bf4\u662f\u4f1a\u8bdd\uff09\u7684\u6570\u91cf\u3002<br \/>\n&#8230;\u7701\u7565&#8230;<br \/>\n\u901a\u8fc7\u589e\u52a0\u540c\u65f6\u8fde\u63a5\u6570\u6765\u8c03\u67e5CPU\u3001\u5185\u5b58\u72b6\u6001\u4ee5\u53caab\u663e\u793a\u7684\u6027\u80fd\u53d8\u5316\u3002\u4e0e\u6b64\u540c\u65f6\uff0c\u6211\u4eec\u8fd8\u5c06\u9010\u6e10\u589e\u52a0MaxClients\u7684\u503c\uff0c\u4ee5\u627e\u5230\u9971\u548c\u70b9\u3002<\/p><\/blockquote>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u662f\u5728\u6ca1\u6709\u5f15\u7528\u53c2\u8003\u8d44\u6599\u7684\u60c5\u51b5\u4e0b\u9996\u6b21\u63d0\u5230 MaxClients \u7684\u5408\u9002\u503c\u3002\u867d\u7136\u8fd8\u6ca1\u6709\u7ed9\u51fa\u5177\u4f53\u7684\u6807\u51c6\uff0c\u4f46\u63d0\u53ca\u4e86\u5982\u4f55\u5bfb\u627e\u5408\u9002\u503c\u7684\u65b9\u6cd5\u3002<\/p>\n<h3>2003\u5e745\u670823\u65e5\uff0c\u57c3\u91cc\u514b\u00b7\u4e54\u83b1\u548c\u65af\u5854\u65af\u00b7\u8d1d\u514b\u66fc\u3002<\/h3>\n<p>\u5b9e\u7528\u7684mod_perl: 10.1.1. \u8ba1\u7b97\u771f\u5b9e\u5185\u5b58\u4f7f\u7528\u60c5\u51b5<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d29a537434c4406c44c55\/8-1.gif\" alt=\"\" \/><\/div>\n<p>\u5177\u4f53\u4ecb\u3063\u7ec6\u5206\u6790\u4e86\u8ba1\u7b97\u6700\u5927\u5b50\u8fdb\u7a0b\u6570\u91cf\u7684\u65b9\u6cd5\u3002<\/p>\n<h3>2003\u5e7410\u670818\u65e5\uff0c\u7af9\u8feb\u826f\u7bc4\uff08\u682a\u5f0f\u4f1a\u793e\u30c9\u30ea\u30fc\u30e0\u30fb\u30a2\u30fc\u30c4\uff09<\/h3>\n<p>\u300cmod_perl \u5728 C10K \u95ee\u9898\u4e2d\u7684\u5e94\u7528\u300dShibuya.pm \u6280\u672f\u8bb2\u5ea7#4 \u203bppt \u6587\u4ef6<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d29a537434c4406c44c55\/12-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2016-07-04 20.11.24.png\" \/><\/div>\n<p>\u5728\u300a\u5b9e\u7528mod_perl\u300b\u4e00\u4e66\u4e2d\uff0c\u6240\u8ff0\u7684\u5185\u5bb9\u5df2\u7ecf\u88ab\u5f62\u8c61\u5316\u4e86\u3002<\/p>\n<h3>2003\u5e7412\u67085\u65e5\uff0c\u5bae\u5185\u306f\u3058\u3081\u81f3\u4e0a\u4e00\u79cd\u9009\u9879\u3002<\/h3>\n<p>\u5bfb\u627e\u8ba1\u7b97\u673a\u76f8\u5173\u5907\u5fd8\u5f55 &#8211; \u6c42\u89e3 MaxClients \u7684\u9002\u5f53\u503c \/ \u9002\u7528\u4e8e\u56fe\u50cf\uff08\u9759\u6001\u5185\u5bb9\uff09\u7684\u670d\u52a1\u5668<\/p>\n<blockquote><p>Apache\u7684\u6700\u5927\u5185\u5b58\u6d88\u8017\u91cf=MaxClients\u00d7\u5b50\u8fdb\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u91cf+\u7236\u8fdb\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u91cf<\/p>\n<p>\u6240\u4ee5\u9996\u5148\u9700\u8981\u6c42\u5f97&#8221;\u5b50\u8fdb\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u91cf&#8221;\u548c&#8221;\u7236\u8fdb\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u91cf&#8221;\u3002<\/p>\n<p>httpd\u7684SIZE\u5373\u4e3a&#8221;\u7236\u8fdb\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u91cf&#8221;\uff0cSIZE &#8211; SHARE\uff08\u4e0e\u7236\u8fdb\u7a0b\u5171\u4eab\u7684\u90e8\u5206\uff09\u5373\u4e3a&#8221;\u5b50\u8fdb\u7a0b\u7684\u5185\u5b58\u6d88\u8017\u91cf&#8221;\u3002<\/p><\/blockquote>\n<p>\u7528\u65e5\u8bed\u5c55\u793a\u4e86\u8ba1\u7b97\u516c\u5f0f\u3002<\/p>\n<h3>2006\u5e742\u67081\u65e5\uff0c\u3070\u3073\u30fc (ID: babie)<\/h3>\n<p>Apache + mod_perl &#8211; \u9700\u8981\u6ce8\u610fMaxClients\u7684\u503c &#8211; \u5c0f\u6b65\u524d\u8fdb<\/p>\n<blockquote><p>MaxClients \u5e94\u8bbe\u4e3a&#8221;\u603b\u5185\u5b58\u5927\u5c0f \/ Apache \u5b50\u8fdb\u7a0b\u5355\u4e2a\u5185\u5b58\u5927\u5c0f&#8221;\uff08\u8fdb\u884c\u820d\u5165\u8fd0\u7b97\uff09\u3002<\/p>\n<p>\u5728\u5e7b\u706f\u7247\u4e2d\u63d0\u5230\u7684 Apache \u7684 Shared_RAM_per_Child\uff08\u5b50\u8fdb\u7a0b\u7684\u5171\u4eab\u5185\u5b58\u91cf\uff09\u662f\u5982\u4f55\u83b7\u5f97\u7684\u5462\uff1f<\/p>\n<p>Shared RAM per Child \u53ef\u4ee5\u901a\u8fc7 RSS &#8211; SHARE \u6765\u51c6\u786e\u83b7\u53d6\u3002\u5982\u679c\u60f3\u8981\u786e\u5207\u5730\u77e5\u9053\u8be5\u503c\uff0c\u53ef\u4ee5\u4f7f\u7528 GTop\u3002<\/p><\/blockquote>\n<p>\u7ecf\u8fc7\u4e00\u6bb5\u65f6\u95f4\u540e\uff0c\u518d\u6b21\u51fa\u73b0\u4e86\u5bf9\u4e8eMaxClients\u7684\u8ba8\u8bba\u7684\u5951\u673a\u3002naoya\u5728\u8bc4\u8bba\u4e2d\u63d0\u5230\u4e86\u5173\u4e8eGTop\u8fd9\u4e2a\u8bdd\u9898\u3002<\/p>\n<h3>2006\u5e742\u67082\u65e5\uff0c\u9ad8\u91ce\u6c60\u3002<\/h3>\n<blockquote><p>\u5728\/proc\/$pid\/smaps\u4e2d\u53ef\u4ee5\u83b7\u53d6\u5230\u5171\u4eab\u7684\u5185\u5b58\u533a\u57df\u3002<br \/>\n\u00b7 \u5728fork\u4e4b\u524d\u5206\u914d\u7684\u5185\u5b58\u533a\u57df\u5c06\u4f1a\u662f\u5171\u4eab\u7684\uff0c\u53d8\u4e3ashared_dirty\u3002<br \/>\n\u00b7 \u5728fork\u4e4b\u540e\u5bf9\u8be5\u533a\u57df\u8fdb\u884c\u5199\u5165\u64cd\u4f5c\u65f6\uff0c\u4f1a\u88ab\u590d\u5236\uff0c\u53d8\u4e3aprivate_dirty\u3002<br \/>\n\u00b7 \u5728fork\u4e4b\u540e\u5206\u914d\u7684\u533a\u57df\u4e0d\u4f1a\u88ab\u5171\u4eab\uff08\u7406\u6240\u5f53\u7136\uff09\uff0c\u4e0d\u4f1a\u6210\u4e3ashared\/private\uff08\u53ef\u80fd\uff09\u3002<br \/>\n\u5f53\u5904\u4e8eshared\u72b6\u6001\u65f6\uff0c\u5b9e\u9645\u7684\u5185\u5b58\u4e0d\u4f1a\u88ab\u6d88\u8017\uff0c\u5f53\u53d8\u4e3aprivate\u65f6\u4f1a\u91cd\u65b0\u5206\u914d\u3002<\/p><\/blockquote>\n<p>\u63d0\u5230\u53ef\u4ee5\u5728\/proc\/$pid\/smaps\u4e2d\u83b7\u53d6\u5230\u5171\u4eab\u5185\u5b58\u3002<\/p>\n<blockquote><p>\u8ba1\u7b97\u6bcf\u4e2a\u5b50\u8fdb\u7a0b\u6d88\u8017\u7684\u5185\u5b58\u91cf\u4e3a\u201cMax_Process_Size &#8211; Shared_RAM_per_Child\u201d\u3002<\/p><\/blockquote>\n<h3>2007\u5e747\u67088\u65e5\uff0c\u690e\u540d\u6df3\u8f14\uff08\u60a0\u6708\uff09\u3002<\/h3>\n<blockquote><p>MaxClients\u7684\u503c = \uff08\u670d\u52a1\u5668\u603bRAM\u91cf &#8211; \u7236Apache\u8fdb\u7a0b\u6d88\u8017\u7684\u5185\u5b58\u91cf\uff09\/ \u5b50Apache\u8fdb\u7a0b\u4e00\u4e2a\u7684\u6d88\u8017\u5185\u5b58\u91cf<\/p>\n<p>\u540c\u65f6\u8fd8\u5e94\u6ee1\u8db3\u4ee5\u4e0b\u8ba1\u7b97\u5f0f\u3002<\/p>\n<p>\u5b50Apache\u8fdb\u7a0b\u4e00\u4e2a\u7684\u6d88\u8017\u5185\u5b58\u91cf x MaxClients\u7684\u503c + \u7236Apache\u8fdb\u7a0b\u6d88\u8017\u5185\u5b58\u91cf &lt; \u670d\u52a1\u5668\u603bRAM\u91cf<\/p><\/blockquote>\n<h3>2007\u5e7410\u670824\u65e5\uff0cMoodle\u3002<\/h3>\n<p>\u8868\u6f14 &#8211; MoodleDocs \u203b\u65e5\u671f\u6839\u636e\u539f\u59cb\u82f1\u6587\u7248\u672c<\/p>\n<blockquote><p>\u8bf7\u6b63\u786e\u8bbe\u7f6eMaxClients\u6307\u4ee4\u3002\u8bf7\u4f7f\u7528\u4ee5\u4e0b\u516c\u5f0f\u8ba1\u7b97\u8bbe\u7f6e\u503c\uff08\u4e3a\u4e86\u4fdd\u7559\u5907\u7528\u5185\u5b58\u7a7a\u95f4\uff0c\u4f7f\u7528\u53ef\u7528\u5185\u5b58\u768480\uff05\uff09\uff1a<\/p>\n<p>MaxClients = \u53ef\u7528\u603b\u5185\u5b58 * 80% \/ Apache\u8fdb\u7a0b\u7684\u6700\u5927\u5185\u5b58\u4f7f\u7528\u91cf<\/p>\n<p>Apache\u8fdb\u7a0b\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u901a\u5e38\u4e3a10MB\u3002\u4e00\u822c\u7ecf\u9a8c\u6cd5\u5219\u662f\uff0c\u4e3a\u4e86\u83b7\u53d6MaxClients\u7684\u503c\uff0c\u5c06\u53ef\u7528\u5185\u5b58\u5bb9\u91cf\u9664\u4ee510MB\u3002\u8981\u627e\u5230Apache\u8fdb\u7a0b\u7684\u6700\u5927\u5185\u5b58\u4f7f\u7528\u91cf\uff0c\u8bf7\u4eceshell\u547d\u4ee4\u7684\u7ed3\u679c\u4e2d\u8bfb\u53d6\u503c\uff1a<\/p>\n<p># ps -ylC httpd &#8211;sort:rss<\/p><\/blockquote>\n<p>\u4f5c\u4e3a\u7ecf\u9a8c\u51c6\u5219\uff0c\u5bf9\u4e8e\u8ba1\u7b97 MaxClients \u5408\u9002\u503c\u7684\u5206\u5b50\u90e8\u5206\uff0c\u5efa\u8bae\u4f7f\u7528\u201c\u53ef\u7528\u5185\u5b58\u768480%\u201d\u3002<br \/>\n\u6b64\u5916\uff0c\u8fd8\u63d0\u4f9b\u4e86\u7528\u4e8e\u786e\u5b9a Apache \u8fdb\u7a0b\u7684\u6700\u5927\u5185\u5b58\u4f7f\u7528\u91cf\u7684\u547d\u4ee4\u3002<\/p>\n<h3>2008\u5e742\u670812\u65e5\uff0c\u4f0a\u85e4\u76f4\u4e5f\uff08id:naoya\uff09\u3002<\/h3>\n<p>\u901a\u8fc7 Copy on Write \u6280\u672f\u5171\u4eab\u7684\u5185\u5b58\u5927\u5c0f\u53ef\u4ee5\u901a\u8fc7\u68c0\u67e5 Linux \u8fdb\u7a0b\u6765\u83b7\u53d6 &#8211; naoya\u7684\u306f\u3066\u306a\u65e5\u8bb0<\/p>\n<blockquote><p>\u5982\u679c\u4ee5mod_perl\u4e3a\u4f8b\uff0c\u9700\u8981\u8003\u8651\u5728MaxClients\u8bbe\u7f6e\u4e2d\u8003\u8651\u5171\u4eab\u7a7a\u95f4\u7684\u5927\u5c0f\u3002<\/p>\n<p>\u6211\u5c1d\u8bd5\u67e5\u627e\u5728\u8fdb\u7a0b\u7684\u5185\u5b58\u7a7a\u95f4\u4e2d\u6709\u591a\u5c11\u91c7\u7528\u5199\u65f6\u590d\u5236\uff08CoW\uff09\u7684\u5171\u4eab\u533a\u57df\uff0c\u5e76\u4e14\u6211\u53d1\u73b0\u53ef\u4ee5\u901a\u8fc7\u68c0\u67e5\/proc\/PID\/smaps\u6765\u5b9e\u73b0\u3002<\/p>\n<p>\u5728\u8fd9\u4e2asmaps\u4e2d\uff0c\u53ef\u4ee5\u5c06\u6bcf\u4e2a\u533a\u57df\u7684\u5927\u5c0f\u8ba1\u7b97\u51fa\u6765\uff0c\u5e76\u5c06Shared_Clean\u548cShared_Dirty\u7684\u5927\u5c0f\u8fdb\u884c\u7d2f\u52a0\uff0c\u4ece\u800c\u53ef\u4ee5\u5f97\u51fa\u8fdb\u7a0b\u4e0e\u5176\u4ed6\u8fdb\u7a0b\u5171\u4eab\u7684\u5185\u5b58\u5927\u5c0f\u3002<\/p>\n<p>\u5bf9\u4e8ePerl\uff0c\u6709\u4e00\u4e2a\u540d\u4e3aLinux::Smaps\u7684\u6a21\u5757\uff0c\u5b83\u53ef\u4ee5\u5bf9\/proc\/PID\/smaps\u7684\u6570\u636e\u8fdb\u884c\u7f16\u7a0b\u5904\u7406\u3002\u6211\u5229\u7528\u5b83\u7f16\u5199\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u811a\u672c\u6765\u67e5\u627e\u5171\u4eab\u533a\u57df\u7684\u5927\u5c0f\u3002<\/p>\n<p>shared_memory_size.pl<br \/>\n#!\/usr\/bin\/env perl<br \/>\nuse strict;<br \/>\nuse warnings;<br \/>\nuse Linux::Smaps;<\/p>\n<p>@ARGV or die &#8220;usage: %0 [pid &#8230;]&#8221;;<\/p>\n<p>printf &#8220;PID\\tRSS\\tSHARED\\n&#8221;;<\/p>\n<p>for my $pid (@ARGV) {<br \/>\nmy $map = Linux::Smaps-&gt;new($pid);<br \/>\nunless ($map) {<br \/>\nwarn $!;<br \/>\nnext;<br \/>\n}<\/p>\n<p>printf<br \/>\n&#8220;%d\\t%d\\t%d (%d%%)\\n&#8221;,<br \/>\n$pid,<br \/>\n$map-&gt;rss,<br \/>\n$map-&gt;shared_dirty + $map-&gt;shared_clean,<br \/>\nint((($map-&gt;shared_dirty + $map-&gt;shared_clean) \/ $map-&gt;rss) * 100)<br \/>\n}<\/p>\n<p>\u5b83\u4f1a\u67e5\u627e\u5e76\u663e\u793a\u4ee5\u7ed9\u5b9aPID\u4f5c\u4e3a\u53c2\u6570\u7684\u8fdb\u7a0b\u7684\u5171\u4eab\u533a\u57df\u5927\u5c0f\u3002<\/p><\/blockquote>\n<p>\u8fd9\u662f\u7b2c\u4e00\u6b21\u63d0\u51fa\u5229\u7528\u811a\u672c\u8ba1\u7b97 MaxClients \u7684\u57fa\u7840\u3002<br \/>\n\u867d\u7136\u4f7f\u7528 Linux::Smaps \u4f1a\u7a0d\u5fae\u4e0d\u65b9\u4fbf\uff0c\u4f46\u5b83\u662f\u5927\u591a\u6570\u76f8\u5173\u6587\u7ae0\u6240\u5f15\u7528\u7684\u8457\u540d\u6587\u7ae0\u3002<\/p>\n<h3>2008\u5e744\u67089\u65e5\uff08ID\uff1a\u9690\u85cf\uff09<\/h3>\n<p>\u5982\u4f55\u5728mod_perl\u4e2d\u589e\u52a0\u4e0e\u7236\u8fdb\u7a0b\u8fdb\u884c\u5199\u65f6\u590d\u5236\u7684\u5171\u4eab\u5185\u5b58\u3002- \u5173\u4e8ePerl\u3001\u5907\u5fd8\u5f55\u548c\u65e5\u8bb0\u7b49\u3002<\/p>\n<blockquote><p>\u5982\u679c\u6709\u5927\u91cf\u8bbf\u95ee\u548c\u9700\u8981\u8bbe\u7f6e\u8f83\u5927\u7684MaxClient\uff0c\u5219\u51cf\u5c11Apache\u6bcf\u4e2a\u8fdb\u7a0b\u7684\u5185\u5b58\u662f\u5f88\u91cd\u8981\u7684\u3002\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5728\u5e94\u7528\u7a0b\u5e8f\u4e2d\u907f\u514d\u52a0\u8f7d\u5927\u578b\u5e93\u5e76\u5c06\u56fe\u50cf\u8f6c\u6362\u6210Gearmand\u4efb\u52a1\u7b49\u5de7\u5999\u7684\u65b9\u6cd5\u6765\u5b9e\u73b0\uff0c\u4f46\u5728Apache\u7236\u8fdb\u7a0b\u548c\u5b50\u8fdb\u7a0b\u4e4b\u95f4\u5c3d\u53ef\u80fd\u589e\u52a0Copy on Write\u7684\u5171\u4eab\u5185\u5b58\u4e5f\u662f\u6709\u6548\u7684\u3002<\/p>\n<p>\u5c06\u6a21\u5757\u653e\u5165\u7236\u8fdb\u7a0b\u5185\u5b58\u7684\u65b9\u6cd5\u662f\uff0c\u5728startup.pl\u4e2d\u5c3d\u53ef\u80fd\u5730\u4f7f\u7528use\u3002\u5728apache\u7684config\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n<p>PerlRequire \/path\/to\/startup.pl<\/p>\n<p>\u5e76\u5728\u5176\u4e2d\u5217\u51fa\u6240\u4f7f\u7528\u7684\u5e94\u7528\u7a0b\u5e8f\u6a21\u5757\u3002<\/p>\n<p>\u4f7f\u7528use Hoge();\u5e76\u5728\u540e\u9762\u52a0\u4e0a()\u4ee5\u963b\u6b62\u51fd\u6570\u7684\u5bfc\u51fa\u3002\u8fd9\u6837\u505a\u5c31\u53ef\u4ee5\u589e\u52a0\u5171\u4eab\u5185\u5b58\u3002\u6b64\u5916\uff0cfork\u662f\u5bf9\u7236\u8fdb\u7a0b\u7684\u590d\u5236\uff0c\u6240\u4ee5\u4e8b\u5148\u4f7f\u7528use\u7f16\u8bd1\u6e90\u4ee3\u7801\u53ef\u4ee5\u8282\u7701\u5b50\u8fdb\u7a0b\u7f16\u8bd1\u7684\u6210\u672c\uff0c\u5982\u679c\u5c06MaxRequestPerChild\u8bbe\u7f6e\u4e3a\u8f83\u5c0f\u503c\uff0c\u5e76\u4e14\u8bbf\u95ee\u91cf\u5f88\u5927\u4e14\u5b50\u8fdb\u7a0b\u9891\u7e41\u518dfork\u7684\u7cfb\u7edf\u4e5f\u53ef\u4ee5\u51cf\u8f7b\u8d1f\u8f7d\u3002<\/p><\/blockquote>\n<h3>2008\u5e745\u67086\u65e5 (id:hogem)<\/h3>\n<p>\u6211\u67e5\u4e86\u4e00\u4e0bApache\u7684MaxClients\u7684\u9002\u5f53\u503c &#8211; \u5728\u806a\u660e\u7684\u535a\u5ba2\u4e0a\u3002<\/p>\n<blockquote><p>\u5982\u679cMPM\u662fprefork\u6a21\u5f0f\u7684\u8bdd\uff0c<\/p>\n<p>\u5b50\u8fdb\u7a0b\u6d88\u8017\u7684\u5185\u5b58\u5927\u5c0f\u4e58\u4ee5MaxClients\u5c0f\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u7684\u5185\u5b58\u5bb9\u91cf\u3002<\/p>\n<p>\u4e0d\u8fc7\uff0c\u8fd9\u4e2a\u8ba1\u7b97\u51fa\u6765\u7684\u6570\u5b57\u662f\u5047\u8bbe\u5b50\u8fdb\u7a0b\u4f7f\u7528\u7684\u5185\u5b58\u6ca1\u6709\u88ab\u5171\u4eab\u7684\u60c5\u51b5\u4e0b\u7684\uff0c\u6240\u4ee5MaxClients\u5e94\u8be5\u53ef\u4ee5\u662f\u66f4\u5927\u7684\u6570\u503c\u3002<\/p>\n<p>(RSS &#8211; SHR)\u4e58\u4ee5MaxClients\u5c0f\u4e8e\u7b49\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u7684\u5185\u5b58\u5bb9\u91cf\u3002<\/p>\n<p>SHR\uff1a\u5171\u4eab\u7684\u5185\u5b58\u5927\u5c0f<br \/>\n\u53ef\u4ee5\u901a\u8fc7top\u547d\u4ee4\u7684SHR\u9879\u8fdb\u884c\u786e\u8ba4\u3002<br \/>\nRSS\uff1a\u8fdb\u7a0b\u4f7f\u7528\u7684\u7269\u7406\u5185\u5b58\u5927\u5c0f<br \/>\n\u53ef\u4ee5\u901a\u8fc7ps\u6216\u8005top\u547d\u4ee4\u7684RSS\u9879\u8fdb\u884c\u786e\u8ba4\u3002<\/p><\/blockquote>\n<h3>2009\u5e7409\u670810\u65e5\uff0c\u5e83\u702c\u6b63\u662d\uff08ID\uff1ahirose31\uff09\u3002<\/h3>\n<p>\u300cFicia\u300d\u4e0e\u57fa\u7840\u8bbe\u65bd\u548cPerl\u76f8\u5173\u7684\u7b49\u7b49\u4e8b\u9879<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d29a537434c4406c44c55\/47-1.png\" alt=\"\u300eFicia\u300f\u30a4\u30f3\u30d5\u30e9\u3068Perl\u306b\u307e\u3064\u308f\u308b\u30a8\u30c8\u30bb\u30c8\u30e92.png\" \/><\/div>\n<h3>2009\u5e7412\u67089\u65e5\uff0c\u5317\u6751\u806a\u58eb\u3002<\/h3>\n<p>\u67e5\u8be2Apache\u7684\u5185\u5b58\u4f7f\u7528\u91cf- satooshi@blog<\/p>\n<blockquote><p>\u6ce8\u610f\u4e8b\u9879\uff1a<\/p>\n<p>\u5728\u8fd9\u4e2a\u811a\u672c\u4e2d\uff0c\u6211\u4eec\u4ece\/proc\/PID\/status\u548c\/proc\/PID\/smaps\u83b7\u53d6\u6570\u636e\uff0c\u5e76\u5bf9\u4ee5\u4e0b\u5185\u5bb9\u8fdb\u884c\u8fc7\u6ee4\uff1a<\/p>\n<p>\/proc\/PID\/status<br \/>\nVmPeak<br \/>\nVmSize<br \/>\nVmHWM<br \/>\nVmRSS<\/p>\n<p>\/proc\/PID\/smaps<br \/>\nRss<br \/>\nShared_Clean<br \/>\nShared_Dirty<\/p>\n<p>\u6211\u4eec\u60f3\u8981\u8c03\u67e5\u6bcf\u4e2a\u8fdb\u7a0b\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u3002<\/p>\n<p>getmem.sh<br \/>\n#!\/bin\/sh<\/p>\n<p>#1 \u4e2a\u8fdb\u7a0b\u540d<br \/>\nif [ $# -ne 1 ]; then<br \/>\nexit<br \/>\nfi<\/p>\n<p># \u6253\u5370\u6807\u9898<br \/>\nprintf &#8220;PID\\tVmPeak\\tVmSize\\tVmHWM\\tVmRSS\\n&#8221;<\/p>\n<p># \u83b7\u53d6\u5185\u5b58\u5927\u5c0f<br \/>\npid=`pgrep $1`<\/p>\n<p>for p in $pid<br \/>\ndo<br \/>\nif [ -f \/proc\/$p\/status ]; then<br \/>\nvm=`grep -e &#8216;^VmPeak:\\|VmSize:\\|VmHWM:\\|VmRSS:&#8217; \/proc\/$p\/status | awk &#8216;{print $2}&#8217;`<br \/>\nprintf &#8220;%d\\t%d\\t%d\\t%d\\t%d\\n&#8221; $p $vm<br \/>\nfi<br \/>\ndone<\/p>\n<p>\u6211\u4eec\u60f3\u8981\u8c03\u67e5\u8fdb\u7a0b\u4e4b\u95f4\u5171\u4eab\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u3002<\/p>\n<p>getshmem.sh<br \/>\n#!\/bin\/sh<\/p>\n<p># $1 \u4e2a\u8fdb\u7a0b\u540d<br \/>\nif [ $# -ne 1 ]; then<br \/>\nexit<br \/>\nfi<\/p>\n<p># \u6253\u5370\u6807\u9898<br \/>\nprintf &#8220;PID\\tRSS\\tSHARED\\n&#8221;<\/p>\n<p># \u83b7\u53d6\u5171\u4eab\u5185\u5b58\u5927\u5c0f<br \/>\npid=`pgrep $1`<\/p>\n<p>for p in $pid<br \/>\ndo<br \/>\nif [ -f \/proc\/$p\/smaps ]; then<br \/>\nvm=`grep -e &#8216;^Rss:\\|^Shared_Clean:\\|^Shared_Dirty:&#8217; \/proc\/$p\/smaps |<br \/>\nawk &#8216;<br \/>\nBEGIN {<br \/>\nrss = 0;<br \/>\nclean = 0;<br \/>\ndirty = 0;<br \/>\n}<br \/>\n{<br \/>\nif($1 == &#8220;Rss:&#8221;) {<br \/>\nrss += $2;<br \/>\n}<br \/>\nelse if($1 == &#8220;Shared_Clean:&#8221;) {<br \/>\nclean += $2;<br \/>\n}<br \/>\nelse if($1 == &#8220;Shared_Dirty:&#8221;) {<br \/>\ndirty += $2;<br \/>\n}<br \/>\n}<br \/>\nEND {<br \/>\nper = (rss == 0) ? 0 : (clean+dirty)*100\/rss;<br \/>\nprintf(&#8220;%d\\t%d\\t%d\\n&#8221;, rss, clean+dirty, per);<br \/>\n}<br \/>\n&#8216;`<\/p>\n<p>printf &#8220;%d\\t%d\\t%d (%d%%)\\n&#8221; $p $vm<br \/>\nfi<br \/>\ndone<\/p><\/blockquote>\n<h3>2010\u5e749\u67081\u65e5\uff0c\u957f\u91ce\u6b63\u5927\u3002<\/h3>\n<p>\u4e13\u4e1a\u670d\u52a1\u5668\u7ba1\u7406\u5458\u5c06Apache\u7684StartServers\u3001(Min|Max)SpareServers\u548cMaxClients\u8bbe\u7f6e\u4e3a\u76f8\u540c\u7684\u539f\u56e0 &#8211; blog.nomadscafe.jp<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d29a537434c4406c44c55\/53-0.png\" alt=\"\u56f3\u8868\" \/><\/div>\n<h3>2010\u5e749\u670823\u65e5\uff0c\u970d\u5229\u3002<\/h3>\n<blockquote><p>\u7528Copy on Write\u6765\u68c0\u67e5\u5171\u4eab\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u3002\u50cf\u5f80\u5e38\u4e00\u6837\uff0c\u53ef\u4ee5\u4f7f\u7528shell\u8fdb\u884c\u64cd\u4f5c\u3002\u5982\u679c\u4f7f\u7528perl\uff0c\u6ca1\u6709\u5b89\u88c5Linux::Smaps\u7b49\u6a21\u5757\u3002<\/p>\n<p>smaps.sh<br \/>\n#!\/bin\/sh<\/p>\n<p>echo -e &#8220;\u8fdb\u7a0bID\\t\u865a\u62df\u5185\u5b58(VSZ)\\t\u5e38\u9a7b\u5185\u5b58(RSS)\\t\u5171\u4eab\u5185\u5b58(Shared)&#8221;<br \/>\nfor pid in $@; do<br \/>\nsmaps=&#8221;\/proc\/$pid\/smaps&#8221;<br \/>\nvsz=$(grep -E &#8220;^Size&#8221; $smaps | awk &#8216;BEGIN{ num = 0 } { num += $2 } END{ print num }&#8217;)<br \/>\nrss=$(grep -E &#8220;^Rss&#8221; $smaps | awk &#8216;BEGIN{ num = 0 } { num += $2 } END{ print num }&#8217;)<br \/>\nshared=$(grep -E &#8220;^Shared&#8221; $smaps | awk &#8216;BEGIN{ num = 0 } { num += $2 } END{ print num }&#8217;)<br \/>\npercent=$(echo &#8220;scale=2; ($shared \/ $rss) * 100&#8221; | bc | cut -d &#8220;.&#8221; -f 1)<br \/>\necho -e &#8220;$pid\\t${vsz}KB\\t${rss}KB\\t${shared}KB\uff08\u5360\u6bd4${percent}%\uff09&#8221;<br \/>\ndone<\/p>\n<p>\u901a\u8fc7\u8fd9\u4e2ashell\u811a\u672c\uff0c\u53ef\u4ee5\u6682\u65f6\u8f93\u51fa\u60f3\u8981\u68c0\u67e5\u7684\u8fdb\u7a0b\u5728Copy on Write\u4e0b\u5171\u4eab\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u3002<\/p>\n<p>\u5c1d\u8bd5\u5728\u5b50\u8fdb\u7a0b\u4e2d\u7684\u6570\u7ec4\u7684\u4e00\u90e8\u5206\uff08\u7ea61\/10\uff09\u5199\u5165\u6570\u636e\u3002<\/p>\n<p>\u5927\u7ea61\/10\u7684\u6570\u636e\u4eceShared_Dirty\u53d8\u4e3a\u4e86Private_Dirty\u3002\u8fd9\u4e0e\u811a\u672c\u53ea\u54111\/10\u5199\u5165\u6570\u636e\u51e0\u4e4e\u4e00\u81f4\u3002<\/p><\/blockquote>\n<h3>2011\u5e741\u670815\u65e5\uff08ID\uff1a\u53cb\u563f\uff09<\/h3>\n<p>Apache\u8c03\u4f18\u5185\u5b58\u4f7f\u7528\u91cf\u8ba1\u7b97 &#8211; \u5fc3\u4e2d\u611f\u6168<\/p>\n<blockquote><p>\u51c6\u5907\u4e86\u4e00\u4e2a\u4ece&#8221;\/proc\/(pid)\/status&#8221;\u4e2d\u83b7\u53d6\u5185\u5b58\u6d88\u8017\u91cf\u5e76\u5217\u51fa\u7684\u811a\u672c\u3002<\/p>\n<p>memory_size.sh<br \/>\n#!\/bin\/sh<\/p>\n<p>GREP=&#8221;\/bin\/grep&#8221;<br \/>\nAWK=&#8221;\/bin\/awk&#8221;<br \/>\nPRINTF=&#8221;\/usr\/bin\/printf&#8221;<\/p>\n<p>if [ $# -lt 1 ]; then<br \/>\necho &#8220;\u7528\u6cd5\uff1a${0} [pid &#8230;]&#8221; 1&gt;&amp;2<br \/>\nexit 100<br \/>\nfi<\/p>\n<p>$PRINTF &#8220;\u8fdb\u7a0bID\\tRSS\\t(\u5cf0\u503c)\\t\u865a\u62df\u5185\u5b58\\t(\u5cf0\u503c)\\n&#8221;<\/p>\n<p>for p in $@<br \/>\ndo<br \/>\nstatus=&#8221;\/proc\/${p}\/status&#8221;<br \/>\nif [ -f $status ]; then<br \/>\nrsssize=`$GREP &#8216;^VmRSS:&#8217; $status | $AWK &#8216;{print $2}&#8217;`<br \/>\nrsspeak=`$GREP &#8216;^VmHWM:&#8217; $status | $AWK &#8216;{print $2}&#8217;`<br \/>\nvmsize=`$GREP &#8216;^VmSize:&#8217; $status | $AWK &#8216;{print $2}&#8217;`<br \/>\nvmpeak=`$GREP &#8216;^VmPeak:&#8217; $status | $AWK &#8216;{print $2}&#8217;`<br \/>\n$PRINTF \\<br \/>\n&#8220;%d\\t%d\\t(%d)\\t%d\\t(%d)\\n&#8221; \\<br \/>\n$p \\<br \/>\n$rsssize \\<br \/>\n$rsspeak \\<br \/>\n$vmsize \\<br \/>\n$vmpeak<br \/>\nfi<br \/>\ndone<\/p>\n<p>for p in `pgrep httpd`; do grep &#8220;^VmHWM:&#8221; \/proc\/$p\/status |awk &#8216;{print $2}&#8217;; done<\/p>\n<p>\u7136\u540e\u5c06\u6570\u636e\u5e26\u5165Excel\u8fdb\u884c\u5904\u7406\uff08\u4e22\u5f03\u65e7\u8fdb\u7a0b\u548c\u65b0\u8fdb\u7a0b\u6570\u636e\uff0c\u8ba1\u7b97\u5e73\u5747\u503c\uff0c\u9884\u6d4b\u8003\u8651\u5171\u4eab\u7684\u6d88\u8017\u91cf\uff09&#8230;&#8230;<\/p><\/blockquote>\n<h3>2011\u5e743\u670817\u65e5\uff08\u7f16\u53f7\uff1aR-H\uff09<\/h3>\n<p>\u6211\u521b\u5efa\u4e86\u4e00\u4e2a\u811a\u672c\u6765\u8ba1\u7b97Apache\u7684MaxClient- \u7f51\u7edc\u8bdd\u9898<\/p>\n<blockquote><p>Apache\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684MaxClients\u53c2\u6570\u53ef\u4ee5\u6839\u636e\u670d\u52a1\u5668\u89c4\u683c\u7b49\u8fdb\u884c\u8ba1\u7b97\uff0c\u56e0\u6b64\u6bcf\u6b21\u624b\u52a8\u8ba1\u7b97\u90fd\u5f88\u7e41\u7410\uff0c\u56e0\u6b64\u6211\u7f16\u5199\u4e86\u4e00\u4e2a\u811a\u672c\u3002<\/p>\n<p>\u8ba1\u7b97\u65b9\u6cd5\uff1a<br \/>\n(\u670d\u52a1\u5668\u5185\u5b58\u603b\u91cf) \/ (httpd\u4f7f\u7528\u5185\u5b58\u603b\u91cf &#8211; httpd\u4f7f\u7528\u5171\u4eab\u5185\u5b58\u603b\u91cf) = MaxClients<\/p>\n<p>\u6e90\u4ee3\u7801\uff1a<br \/>\nhttps:\/\/github.com\/ryoppy\/Get-MaxClients.<\/p><\/blockquote>\n<h3>2011\u5e745\u670819\u65e5Phize<\/h3>\n<p>Apache\u8c03\u4f18: \u8ba1\u7b97MaxClients\u53ef\u4ee5\u8bbe\u7f6e\u7684\u4e0a\u9650\u503c &#8211; (DxD)\u221e<\/p>\n<blockquote><p>\u6211\u5df2\u7ecf\u521b\u5efa\u4e86\u4e00\u4e2a\u53ef\u4ee5\u8ba1\u7b97MaxClients\u4e0a\u9650\u503c\u7684shell\u811a\u672c\u3002<\/p>\n<p>get_max_clients.sh<br \/>\n#!\/bin\/bash<\/p>\n<p>_PIDS=(`pgrep httpd`)<br \/>\n_PROC_COUNT=${#_PIDS[@]}<\/p>\n<p>_MEMORY_TOTAL=`free | grep Mem | awk &#8216;{print $2;};&#8217;`<br \/>\n#_MEMORY_FREE=`vmstat -a | awk &#8216;NR==3{print $4+$5;};&#8217;`<br \/>\n_RSS_TOTAL=0<br \/>\n_SHARED_TOTAL=0<\/p>\n<p>for _PID in ${_PIDS[@]}; do<br \/>\n_SMAPS=`cat \/proc\/$_PID\/smaps`<br \/>\n_RSS=`echo &#8220;$_SMAPS&#8221; | grep Rss | awk &#8216;{value += $2} END {print value;};&#8217;`<br \/>\n_SHARED=`echo &#8220;$_SMAPS&#8221; | grep Shared | awk &#8216;{value += $2} END {print value;};&#8217;`<br \/>\n_RSS_TOTAL=`expr $_RSS_TOTAL + $_RSS`<br \/>\n_SHARED_TOTAL=`expr $_SHARED_TOTAL + $_SHARED`<br \/>\ndone<\/p>\n<p>_RSS_AVERAGE=`expr $_RSS_TOTAL \/ $_PROC_COUNT`<br \/>\n_SHARED_AVERAGE=`expr $_SHARED_TOTAL \/ $_PROC_COUNT`<br \/>\n_PROC_MEMORY=`expr $_RSS_AVERAGE &#8211; $_SHARED_AVERAGE`<br \/>\n#_MIN_MAX_CLIENTS=`expr $_MEMORY_FREE \/ $_PROC_MEMORY`<br \/>\n_MAX_MAX_CLIENTS=`expr $_MEMORY_TOTAL \/ $_PROC_MEMORY`<\/p>\n<p>echo &#8220;\u7dcf\u30e1\u30e2\u30ea\u91cf \/ (Rss\u5e73\u5747 &#8211; \u5171\u6709\u5e73\u5747) = $_MEMORY_TOTAL \/ ($_RSS_AVERAGE &#8211; $_SHARED_AVERAGE)&#8221;<br \/>\n#echo &#8220;\u7a7a\u304d\u30e1\u30e2\u30ea\u91cf \/ (Rss\u5e73\u5747 &#8211; \u5171\u6709\u5e73\u5747) = $_MEMORY_FREE \/ ($_RSS_AVERAGE &#8211; $_SHARED_AVERAGE)&#8221;<br \/>\n#echo &#8220;MaxClients = $_MIN_MAX_CLIENTS ~ $_MAX_MAX_CLIENTS&#8221;<br \/>\necho &#8220;MaxClients = $_MAX_MAX_CLIENTS&#8221;<\/p>\n<p>exit 0<\/p>\n<p>\u5b9e\u9645\u4e0a\uff0c\u7531\u4e8e\u64cd\u4f5c\u7cfb\u7edf\u548c\u5176\u4ed6\u8fdb\u7a0b\u4e5f\u4f7f\u7528\u5185\u5b58\uff0c\u6240\u4ee5\u6700\u597d\u4f7f\u7528\u53ef\u7528\u5185\u5b58\u91cf\u800c\u4e0d\u662f\u603b\u5185\u5b58\u91cf\u3002<\/p>\n<p>(\u5df2\u6ce8\u91ca\u7684\u90e8\u5206\u662f\u4f7f\u7528\u53ef\u7528\u5185\u5b58\u91cf\u8ba1\u7b97MaxClients\u6570\u91cf\u3002\u7136\u800c\uff0c\u8bf7\u6ce8\u610f\u5b83\u6ca1\u6709\u8003\u8651\u5df2\u542f\u52a8\u7684Apache\u8fdb\u7a0b\u4f7f\u7528\u7684\u5185\u5b58\u91cf\uff0c\u56e0\u6b64\u4e0d\u5b8c\u6574\u3002)<\/p><\/blockquote>\n<h3>2011\u5e748\u67085\u65e5\uff08ID\uff1ayumatsumo\uff09<\/h3>\n<p>\u8fdb\u7a0b\u7684\u5199\u65f6\u590d\u5236\u5171\u4eab\u5185\u5b58\u7684\u5927\u5c0f &#8211; \u677e\u672c\u7684\u535a\u5ba2<\/p>\n<blockquote><p>\u6211\u5199\u4e86\u4e00\u4e2a\u76f4\u63a5\u8bfb\u53d6\/proc\/PID\/smaps\u6587\u4ef6\u7684\u811a\u672c\u3002<\/p>\n<p>\u4e5f\u5c31\u662f\u8bf4\uff0c\u4f60\u4e0d\u9700\u8981\u5b89\u88c5Linux::Smaps\u4e5f\u53ef\u4ee5\u4f7f\u7528\u3002(List::Util\u662f\u6838\u5fc3\u6a21\u5757\uff0c\u53ea\u8981\u662f5.8\u7248\u672c\u4ee5\u4e0a\u5c31\u6709\uff0c\u6240\u4ee5\u4f7f\u7528\u4e86\u5b83\u3002)<\/p>\n<p>shared_memory_size.pl<br \/>\n#!\/bin\/env perl<\/p>\n<p>use strict;<br \/>\nuse warnings;<\/p>\n<p>use List::Util ();<\/p>\n<p>@ARGV or die &#8220;\u4f7f\u7528\u65b9\u6cd5\uff1a%0 [pid &#8230;]&#8221;;<\/p>\n<p>my @output;<\/p>\n<p>foreach my $pid (@ARGV) {<br \/>\ndie &#8220;\u65e0\u6548\u7684\u8fdb\u7a0b\u53f7 &#8216;$pid'&#8221; if $pid =~ \/\\D\/;<br \/>\nmy @smaps = `cat \/proc\/$pid\/smaps`;<br \/>\ndie if $? != 0;<br \/>\nmy @shared = map { \/(\\d+)\\s+kB\/; $1 } grep { \/^Shared_(Clean|Dirty)\/ } @smaps;<br \/>\nmy $shared_total = List::Util::sum(@shared);<br \/>\nmy @rss = map { \/(\\d+)\\s+kB\/; $1 } grep { \/^Rss\/ } @smaps;<br \/>\nmy $rss_total = List::Util::sum(@rss);<br \/>\nmy $parcent = sprintf &#8216;(%d %%)&#8217;, int(($shared_total \/ $rss_total) * 100);<br \/>\npush @output, [$pid, $rss_total, $parcent];<br \/>\n}<\/p>\n<p>unshift @output, [qw(PID RSS SHARED)];<\/p>\n<p>foreach my $out (@output) {<br \/>\nprint join &#8220;\\t&#8221;, @$out;<br \/>\nprint &#8220;\\n&#8221;;<br \/>\n}<\/p><\/blockquote>\n<h3>2012\u5e748\u670812\u65e5\uff0c\u89c9\u89c9\u7684iPhone\u3002<\/h3>\n<p>30\u5c81\u7684WEB\u5de5\u7a0b\u5e08\u7684\u65e5\u8bb0\uff1aApache\u8fdb\u7a0b\u7684\u5185\u5b58\u4f7f\u7528\u91cf<\/p>\n<blockquote><p>\u770b\u8d77\u6765\uff0c\u6211\u4eec\u4e0d\u80fd\u7b80\u5355\u5730\u901a\u8fc7\u67e5\u770b\/proc\/(PID)\/status\u7684VmHWM\u6765\u4e86\u89e3\u6bcf\u4e2a\u8fdb\u7a0b\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u3002<br \/>\n\u5f53\u4ece\u7236\u8fdb\u7a0bfork\u5b50\u8fdb\u7a0b\u65f6\uff0c\u5b50\u8fdb\u7a0b\u4f1a\u5171\u4eab\u7236\u8fdb\u7a0b\u7684\u5185\u5b58\u7a7a\u95f4\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u8003\u8651\u5171\u4eab\u90e8\u5206\u3002<\/p>\n<p>\u7531\u4e8e\/proc\/(PID)\/smaps\u4f3c\u4e4e\u53ea\u5141\u8bb8root\u7528\u6237\u8bfb\u53d6\u6743\u9650\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u4ee5root\u7528\u6237\u8eab\u4efd\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<p>echo -e &#8220;PID\\tPPID\\tRSS\\tSHARED\\tPRIVATE&#8221;;ps -ef|grep httpd|grep -v grep|while read line;do args=(${line});echo -ne ${args[1]}&#8221;\\t&#8221;${args[2]}&#8221;\\t&#8221;;cat \/proc\/${args[1]}\/smaps|awk &#8216;BEGIN{rss=0;shared=0;}\/Rss\/{rss+=$2;}\/Shared\/{shared+=$2;}END{printf(&#8220;%.1f\\t%.1f\\t%.1f\\n&#8221;,rss\/1024,shared\/1024,(rss-shared)\/1024);}&#8217;;done<\/p><\/blockquote>\n<p>\u89e3\u8aac\u5982\u4f55\u8a08\u7b97Apache\u6bcf\u500b\u9032\u7a0b\u7684\u8a18\u61b6\u9ad4\u4f7f\u7528\u91cf\u7684\u547d\u4ee4\uff1a30\u6b72\u7684WEB\u5de5\u7a0b\u5e2b\u7684\u65e5\u8a18<\/p>\n<blockquote><p>\u4e3a\u4e86\u4f7f\u7a0b\u5e8f\u7ed3\u6784\u66f4\u6613\u4e8e\u7406\u89e3\uff0c\u6211\u5728\u4e0a\u6b21\u4ecb\u7ecd\u7684\u547d\u4ee4\u4e2d\u6dfb\u52a0\u4e86\u6362\u884c\u7b26\u3002<\/p>\n<p>echo -e &#8220;PID\\tPPID\\tRSS\\tSHARED\\tPRIVATE&#8221;;<br \/>\nps -ef<br \/>\n|grep httpd<br \/>\n|grep -v grep<br \/>\n|while read line;<br \/>\ndo<br \/>\nargs=(${line});<br \/>\necho -ne ${args[1]}&#8221;\\t&#8221;${args[2]}&#8221;\\t&#8221;;<br \/>\ncat \/proc\/${args[1]}\/smaps<br \/>\n|awk &#8216;<br \/>\nBEGIN{rss=0;shared=0;}<br \/>\n\/Rss\/{rss+=$2;}<br \/>\n\/Shared\/{shared+=$2;}<br \/>\nEND{printf(&#8220;%.1f\\t%.1f\\t%.1f\\n&#8221;,rss\/1024,shared\/1024,(rss-shared)\/1024);}<br \/>\n&#8216;;<br \/>\ndone<\/p>\n<p>[\u7b2c\u4e00\u884c] \u8f93\u51fa\u6807\u9898\u884c\uff08\u6bcf\u5217\u4ee5\u5236\u8868\u7b26\u5206\u9694\uff09<br \/>\n[\u7b2c\u4e8c\u884c] \u4f7f\u7528ps\u547d\u4ee4\u83b7\u53d6\u8fdb\u7a0b\u5217\u8868<br \/>\n[\u7b2c\u4e09\u3001\u56db\u884c] \u63d0\u53d6\u5305\u542b\u5b57\u7b26\u4e32\u201chttpd\u201d\u7684\u884c\uff08\u6392\u9664grep\u547d\u4ee4\u7684\u8fdb\u7a0b\uff09<br \/>\n[\u7b2c\u4e94\u3001\u516d\u884c] \u5bf9\u83b7\u53d6\u7684\u7ed3\u679c\uff0c\u9010\u884c\u6267\u884c\u7b2c\u4e03\u884c\u5230\u7b2c\u5341\u4e94\u884c\u7684\u5faa\u73af\u5904\u7406<br \/>\n[\u7b2c\u4e03\u884c] \u5c06\u7b2c\u4e09\u3001\u56db\u884c\u83b7\u53d6\u7684\u7ed3\u679c\u4ee5\u7a7a\u683c\u4e3a\u5206\u9694\u7b26\u5206\u5272\u4e3a\u6570\u7ec4\u5b58\u50a8<br \/>\n[\u7b2c\u516b\u884c] \u8f93\u51fa\u8fdb\u7a0bID\u3001\u7236\u8fdb\u7a0bID\uff08\u4e0d\u6362\u884c\uff09<br \/>\n[\u7b2c\u4e5d\u3001\u5341\u3001\u5341\u516d\u884c] \u8bfb\u53d6\u8fdb\u7a0bID\u5bf9\u5e94\u7684smaps\u6587\u4ef6\uff0c\u5e76\u4f20\u9012\u7ed9awk\u547d\u4ee4\uff0c\u6267\u884c\u7b2c\u5341\u4e00\u884c\u5230\u7b2c\u5341\u56db\u884c\u7684\u5904\u7406\u5faa\u73af<br \/>\n[\u7b2c\u5341\u4e00\u884c] \u5728awk\u547d\u4ee4\u4e2d\u521d\u59cb\u5316\u53d8\u91cf<br \/>\n[\u7b2c\u5341\u4e8c\u884c] \u5982\u679c\u5305\u542b\u5b57\u7b26\u4e32\u201cRss\u201d\u7684\u884c\uff0c\u5219\u5c06\u503c\u52a0\u5230\u53d8\u91cfRss<br \/>\n[\u7b2c\u5341\u4e09\u884c] \u5982\u679c\u5305\u542b\u5b57\u7b26\u4e32\u201cShared\u201d\u7684\u884c\uff0c\u5219\u5c06\u503c\u52a0\u5230\u53d8\u91cfShared<br \/>\n[\u7b2c\u5341\u56db\u884c] \u5728\u904d\u5386smaps\u6587\u4ef6\u7684\u6240\u6709\u884c\u540e\uff0c\u8f93\u51fa\u53d8\u91cfRss\u3001\u53d8\u91cfShared\u3001\u53d8\u91cfRss-\u53d8\u91cfShared\uff0c\u5e76\u6362\u884c\u8f93\u51fa<\/p><\/blockquote>\n<h3>2013\u5e743\u670828\u65e5\uff0c\u6a4b\u672c\u5343\u5c0b\u3002<\/h3>\n<p>\u6d4b\u91cfApache\uff08httpd\uff09\u7684\u5185\u5b58\u4f7f\u7528\u91cf &#8211; \u4e0d\u5b8c\u6574\u7684\u5c38\u4f53<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/bin\/bash<\/span>\r\n\r\n<span class=\"nv\">PIDS<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>ps axfv | <span class=\"nb\">grep <\/span>httpd | <span class=\"nb\">grep<\/span> <span class=\"nt\">-v<\/span> <span class=\"s1\">'grep'<\/span> | <span class=\"nb\">awk<\/span> <span class=\"s1\">'{print $1}'<\/span><span class=\"sb\">`<\/span>\r\n<span class=\"nv\">SUM<\/span><span class=\"o\">=<\/span>0\r\n<span class=\"nv\">COUNT<\/span><span class=\"o\">=<\/span>0\r\n\r\n<span class=\"nb\">printf<\/span> <span class=\"s2\">\"MEM<\/span><span class=\"se\">\\t<\/span><span class=\"s2\">S_Clean<\/span><span class=\"se\">\\t<\/span><span class=\"s2\">S_Dirty<\/span><span class=\"se\">\\t<\/span><span class=\"s2\">Own_Memory<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"<\/span>\r\n<span class=\"k\">for <\/span>pid <span class=\"k\">in<\/span> <span class=\"nv\">$PIDS<\/span>\r\n<span class=\"k\">do\r\n  <\/span><span class=\"nv\">MEM<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">cat<\/span> \/proc\/<span class=\"nv\">$pid<\/span>\/status | <span class=\"nb\">grep<\/span> <span class=\"s1\">'VmHWM'<\/span> | <span class=\"nb\">awk<\/span> <span class=\"s1\">'{print $2}'<\/span><span class=\"si\">)<\/span>\r\n  <span class=\"nv\">SC<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">grep <\/span>Shared_Clean \/proc\/<span class=\"nv\">$pid<\/span>\/smaps | <span class=\"nb\">awk<\/span> <span class=\"s1\">'BEGIN{n=0}{n+=$2}END{print n}'<\/span><span class=\"si\">)<\/span>\r\n  <span class=\"nv\">SD<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">grep <\/span>Shared_Dirty \/proc\/<span class=\"nv\">$pid<\/span>\/smaps | <span class=\"nb\">awk<\/span> <span class=\"s1\">'BEGIN{n=0}{n+=$2}END{print n}'<\/span><span class=\"si\">)<\/span>\r\n  <span class=\"nv\">OWN_MEM<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span><span class=\"nb\">expr<\/span> <span class=\"nv\">$MEM<\/span> - <span class=\"se\">\\(<\/span> <span class=\"nv\">$SC<\/span> + <span class=\"nv\">$SD<\/span> <span class=\"se\">\\)<\/span><span class=\"sb\">`<\/span>\r\n  <span class=\"nv\">SUM<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span><span class=\"nb\">expr<\/span> <span class=\"nv\">$SUM<\/span> + <span class=\"nv\">$OWN_MEM<\/span><span class=\"sb\">`<\/span>\r\n  <span class=\"nb\">printf<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$MEM<\/span><span class=\"se\">\\t<\/span><span class=\"nv\">$SC<\/span><span class=\"se\">\\t<\/span><span class=\"nv\">$SD<\/span><span class=\"se\">\\t<\/span><span class=\"nv\">$OWN_MEM<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"<\/span>\r\n  <span class=\"nv\">COUNT<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span><span class=\"nb\">expr<\/span> <span class=\"nv\">$COUNT<\/span> + 1<span class=\"sb\">`<\/span>\r\n<span class=\"k\">done\r\n<\/span><span class=\"nb\">printf<\/span> <span class=\"s2\">\"SUMMARY<\/span><span class=\"se\">\\t<\/span><span class=\"nv\">$SUM<\/span><span class=\"s2\"> kb<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"<\/span>\r\n<span class=\"nv\">AVG<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span><span class=\"nb\">expr<\/span> <span class=\"nv\">$SUM<\/span> \/ <span class=\"nv\">$COUNT<\/span><span class=\"sb\">`<\/span>\r\n<span class=\"nb\">printf<\/span> <span class=\"s2\">\"AVG<\/span><span class=\"se\">\\t<\/span><span class=\"nv\">$AVG<\/span><span class=\"s2\"> kb<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">\"<\/span>\r\n<\/code><\/pre>\n<h3>2013\u5e7410\u670810\u65e5 (hirobanex)<\/h3>\n<p>\u4e0eApache\u6216\u6d3e\u751f\u8fdb\u7a0b\u7684\u5185\u5b58\u8c03\u4f18\u76f8\u5173\u7684\u7b14\u8bb0\u548c\u811a\u672c | hirobanex.net<\/p>\n<blockquote><p>\u5f53\u6211\u68c0\u67e5apache\u8fdb\u7a0b\u65f6\uff0c\u9700\u8981\u4f7f\u7528sudo\u6267\u884c\uff0c\u56e0\u6b64\u6211\u4e0d\u5f97\u4e0d\u6bcf\u6b21\u90fd\u5b89\u88c5Linux::Smaps\u5230System Perl\u3002\u800c\u4e14\uff0c\u5728\u6211\u7684Ubuntu\u73af\u5883\u4e2d\uff0c\u6700\u65b0\u7248\u672c\u76840.12\u768406-VmFlags.t\u6d4b\u8bd5\u5931\u8d25\u4e86\uff0c\u5f88\u70e6\u4eba\u3002\u6211\u60f3\u5230\u53ef\u4ee5\u4e0d\u4f7f\u7528Linux::Smaps\uff0c\u6240\u4ee5\u6211\u628a\u5b83\u811a\u672c\u5316\u4e86\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u6bcf\u6b21\u90fd\u8981\u8fdb\u884c\u975e\u5171\u4eab\u90e8\u5206\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u4e58\u6cd5\u8fd0\u7b97\u5f88\u9ebb\u70e6\uff0c\u6240\u4ee5\u6211\u51b3\u5b9a\u5c06\u5176\u663e\u793a\u5728\u53f3\u4fa7\u3002<\/p>\n<p>none_shared_memory_fetcher.pl<br \/>\n#!\/usr\/bin\/env perl<br \/>\nuse strict;<br \/>\nuse warnings;<\/p>\n<p>@ARGV or die &#8220;usage: %0 [pid &#8230;]&#8221;;<\/p>\n<p>printf &#8220;PID\\tRSS\\tSHARED\\tNONE_SHARED\\n&#8221;;<\/p>\n<p>for my $pid (@ARGV) {<br \/>\nopen my $fh, &#8220;&lt; \/proc\/$pid\/smaps&#8221; or (warn $! and next);<br \/>\nmy @rows = &lt;$fh&gt;;<br \/>\nmy $rss = mem_size_fetcher(&#8216;Rss&#8217;,@rows) or next;<br \/>\nmy $shared = mem_size_fetcher(&#8216;Shared_Clean&#8217;,@rows) + mem_size_fetcher(&#8216;Shared_Dirty&#8217;,@rows);<\/p>\n<p>printf<br \/>\n&#8220;%d\\t%d\\t%d (%d%%)\\t%d\\n&#8221;,<br \/>\n$pid,<br \/>\n$rss,<br \/>\n$shared,<br \/>\nint(($shared \/ $rss) * 100),<br \/>\n($rss &#8211; $shared),<br \/>\n}<\/p>\n<p>sub mem_size_fetcher {<br \/>\nmy ($target,@rows) = @_;<\/p>\n<p>my $mem_size = 0;<\/p>\n<p>for my $row (@rows) {<br \/>\nmy ($mem) = $row =~ \/^$target:\\s*(\\d+)\/i;<br \/>\n$mem_size +=($mem||0);<br \/>\n}<\/p>\n<p>return $mem_size;<br \/>\n}<\/p>\n<p>NONE_SHARED\u8868\u793a\u5b50\u8fdb\u7a0b\u72ec\u7acb\u7684\u5185\u5b58\u4f7f\u7528\u91cf\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u8bf7\u6ce8\u610f\uff0c\u7531\u4e8e\u6bcf\u6b21\u8bf7\u6c42\u53ef\u80fd\u4f1a\u53d1\u751f\u5185\u5b58\u6cc4\u6f0f\u7b49\u95ee\u9898\uff0c\u5b50\u8fdb\u7a0b\u6709\u589e\u5927\u7684\u8d8b\u52bf\uff0c\u6240\u4ee5\u9700\u8981\u8fdb\u884c\u4e00\u5b9a\u6570\u91cf\u7684\u8bf7\u6c42\u5e76\u5728\u63a5\u8fd1MaxRequestsPerChild\u7684\u8fdb\u7a0b\u4e0a\u8ba1\u7b97\u3002<\/p><\/blockquote>\n<h3>2014\u5e7412\u670823\u65e5\uff08@gotyoooo\uff09<\/h3>\n<p>\u5723\u8bde\u524d\u591c\u670d\u52a1\u5668\u6545\u969c\u7684\u6545\u969c\u6392\u9664 &#8211; Qiita\uff0c\u8ba9\u6211\u4eec\u65e9\u70b9\u56de\u5bb6<\/p>\n<blockquote><p>\u68c0\u67e5_apache_memory.sh<br \/>\n#!\/bin\/sh<br \/>\nMEMTOTAL=`grep &#8216;MemTotal&#8217; \/proc\/meminfo | awk &#8216;{print $2}&#8217;`<br \/>\nUNIT=`grep &#8216;MemTotal&#8217; \/proc\/meminfo | awk &#8216;{print $3}&#8217;`<\/p>\n<p>PARENT_PID=`ps auxw | grep httpd | grep root | grep -v grep | awk &#8216;{print $2}&#8217;`<br \/>\nPARENT_MEM=`grep &#8216;VmHWM&#8217; \/proc\/${PARENT_PID}\/status | awk &#8216;{print $2}&#8217;`<\/p>\n<p>PID=`ps auxw | grep httpd | grep -v root | awk &#8216;{print $2}&#8217;`<br \/>\nCOUNT=0<br \/>\nCHILED_MEM_TOTAL=0<br \/>\nCHILED_MEM_TOTAL_NO_SHARE=0<\/p>\n<p>echo -e &#8220;[apache\u8fdb\u7a0b\u5185\u5b58\u4f7f\u7528\u91cf]&#8221;<br \/>\necho -e &#8220;(\u7236\u8fdb\u7a0b)&#8221;<br \/>\necho -e &#8220;\u8fdb\u7a0bID\\t\u5185\u5b58&#8221;<br \/>\necho -e &#8220;${PARENT_PID}\\t${PARENT_MEM}${UNIT}&#8221;<br \/>\necho -e &#8220;(\u5b50\u8fdb\u7a0b)&#8221;<br \/>\necho -e &#8220;\u8fdb\u7a0bID\\t\u5185\u5b58\\t\u5171\u4eab\\t\u72ec\u7acb&#8221;<br \/>\nfor pid in $PID<br \/>\ndo<br \/>\nPMEM=`grep &#8216;VmHWM&#8217; \/proc\/${pid}\/status | awk &#8216;{print $2}&#8217;`<br \/>\nSHARE_MEM=`awk &#8216;BEGIN{shared=0;}\/Shared\/{shared+=$2;}END{printf(&#8220;%d&#8221;,shared);}&#8217; \/proc\/${pid}\/smaps`<br \/>\nPRIVATE_MEM=`expr $PMEM &#8211; $SHARE_MEM`<br \/>\nCHILED_MEM_TOTAL=`expr $CHILED_MEM_TOTAL + $PMEM`<br \/>\nCHILED_MEM_TOTAL_NO_SHARE=`expr $CHILED_MEM_TOTAL_NO_SHARE + $PRIVATE_MEM`<br \/>\nCOUNT=`expr $COUNT + 1`<br \/>\necho -e &#8220;${pid}\\t${PMEM}${UNIT}\\t${SHARE_MEM}${UNIT}\\t${PRIVATE_MEM}${UNIT}&#8221;<br \/>\ndone<\/p>\n<p>CHILED_MEM_AVE=`expr $CHILED_MEM_TOTAL \/ $COUNT`<br \/>\nCHILED_MEM_AVE_NO_SHARE=`expr $CHILED_MEM_TOTAL_NO_SHARE \/ $COUNT`<\/p>\n<p>echo -e &#8220;\u5b50\u8fdb\u7a0b\u6570 \\t\\t\\t: ${COUNT}&#8221;<br \/>\necho -e &#8220;\u5b50\u8fdb\u7a0b\u5185\u5b58\u4f7f\u7528\u91cf\u5408\u8ba1 \\t: ${CHILED_MEM_TOTAL} ${UNIT}&#8221;<br \/>\necho -e &#8220;\u5b50\u8fdb\u7a0b\u5185\u5b58\u4f7f\u7528\u91cf\u5e73\u5747 \\t: ${CHILED_MEM_AVE} ${UNIT}&#8221;<br \/>\necho -e &#8220;\u5b50\u8fdb\u7a0b\u5185\u5b58\u4f7f\u7528\u91cf\u5408\u8ba1(\u4e0d\u5305\u542b\u5171\u4eab) \\t: ${CHILED_MEM_TOTAL_NO_SHARE} ${UNIT}&#8221;<br \/>\necho -e &#8220;\u5b50\u8fdb\u7a0b\u5185\u5b58\u4f7f\u7528\u91cf\u5e73\u5747(\u4e0d\u5305\u542b\u5171\u4eab) \\t: ${CHILED_MEM_AVE_NO_SHARE} ${UNIT}&#8221;<\/p>\n<p>echo &#8220;==============================================================&#8221;<br \/>\nUSE_MEM=`expr $PARENT_MEM + $CHILED_MEM_TOTAL_NO_SHARE`<br \/>\necho -e &#8220;apache\u5185\u5b58\u4f7f\u7528\u91cf \\t: ${USE_MEM} ${UNIT}&#8221;<br \/>\necho -e &#8220;\u603b\u5185\u5b58\u91cf \\t\\t: ${MEMTOTAL} ${UNIT}&#8221;<\/p><\/blockquote>\n<h3>2016\u5e741\u67087\u65e5\uff0c\u4e9a\u9a6c\u900a AWS\u3002<\/h3>\n<p>\u5728\u4e9a\u9a6c\u900a EC2 \u4e0a\u5bf9 Apache \u8fdb\u884c\u5185\u5b58\u8c03\u4f18\u3002<\/p>\n<blockquote><p>5.\u8ba1\u7b97\u4ee5\u4e0b\u8bbe\u7f6e\u53d8\u91cf ServerLimit \u548c MaxClients\uff08\u6216 Apache 2.4 \u7684\u60c5\u51b5\u4e0b\u4e3a MaxRequestWorkers\uff09\u7684\u503c\u3002<br \/>\na. \u5982\u679c\u5b9e\u4f8b\u7684 RAM \u8d85\u8fc7 4 GB\uff0c\u5219\u901a\u8fc7 Apache \u8fdb\u7a0b\u7684\u5e73\u5747 %MEM \u503c\u9664\u4ee5 90%\u3002\u4f8b\u5982\uff0c\u5982\u679c\u5e73\u5747 %MEM \u503c\u4e3a 0.8%\uff0c\u5219\u5c06 90%\uff080.9\uff09\u9664\u4ee5 0.8%\uff080.008\uff09\u3002<br \/>\n\u7ed3\u679c\u4e3a 112.5\uff0c\u5728\u5c0f\u6570\u70b9\u7b2c\u4e00\u4f4d\u56db\u820d\u4e94\u5165\u4e3a\u6574\u6570\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u7ed3\u679c\u4e3a 112\u3002<br \/>\nb. \u5982\u679c\u5b9e\u4f8b\u7684 RAM \u5c0f\u4e8e\u7b49\u4e8e 4 GB\uff0c\u5219\u901a\u8fc7 Apache \u8fdb\u7a0b\u7684\u5e73\u5747 %MEM \u503c\u9664\u4ee5 80%\u3002\u4f8b\u5982\uff0c\u5982\u679c\u5e73\u5747 %MEM \u503c\u4e3a 0.8%\uff0c\u5219\u5c06 80%\uff080.8\uff09\u9664\u4ee5 0.8%\uff080.008\uff09\u3002<br \/>\n\u7ed3\u679c\u4e3a 100\u3002<br \/>\n\u6ce8\u610f<br \/>\n\u8fd9\u4e9b\u503c\u662f\u57fa\u4e8e\u5b9e\u4f8b\u662f\u4e13\u7528\u7684 web \u670d\u52a1\u5668\u8fdb\u884c\u8ba1\u7b97\u7684\u3002\u5982\u679c\u670d\u52a1\u5668\u6258\u7ba1\u5176\u4ed6\u5e94\u7528\u7a0b\u5e8f\uff0c\u8bf7\u5728\u6267\u884c\u6b64\u8ba1\u7b97\u4e4b\u524d\u4ece 90% \u6216 80% \u4e2d\u51cf\u53bb\u8fd9\u4e9b\u5e94\u7528\u7a0b\u5e8f\u7684\u603b\u5185\u5b58\u4f7f\u7528\u6bd4\u4f8b\u3002\u5728 RAM \u5c0f\u4e8e\u7b49\u4e8e 4 GB \u7684\u5b9e\u4f8b\u4e0a\uff0c\u5982\u679c\u9664\u4e86 Apache \u8fd8\u8fd0\u884c\u5176\u4ed6\u5e94\u7528\u7a0b\u5e8f\uff0c\u5219\u53ef\u80fd\u4f1a\u5bfc\u81f4\u6027\u80fd\u4e0b\u964d\u3002<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u5173\u4e8eMaxClients\u548cMaxRequestWorkers\u7684\u63d0\u53ca \u8bf7\u6309\u65f6\u95f4\u987a\u5e8f\u603b\u7ed3\u6709\u5173 Apache \u7684 M [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36547","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/apache\u7684maxclients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f\" \/>\n<meta property=\"og:description\" content=\"\u5173\u4e8eMaxClients\u548cMaxRequestWorkers\u7684\u63d0\u53ca \u8bf7\u6309\u65f6\u95f4\u987a\u5e8f\u603b\u7ed3\u6709\u5173 Apache \u7684 M [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/apache\u7684maxclients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-17T01:08:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T02:20:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d29a537434c4406c44c55\/8-1.gif\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/\",\"name\":\"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-11-17T01:08:23+00:00\",\"dateModified\":\"2024-04-29T02:20:01+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/apache\u7684maxclients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f\/","og_locale":"zh_CN","og_type":"article","og_title":"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f","og_description":"\u5173\u4e8eMaxClients\u548cMaxRequestWorkers\u7684\u63d0\u53ca \u8bf7\u6309\u65f6\u95f4\u987a\u5e8f\u603b\u7ed3\u6709\u5173 Apache \u7684 M [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/apache\u7684maxclients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-11-17T01:08:23+00:00","article_modified_time":"2024-04-29T02:20:01+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d29a537434c4406c44c55\/8-1.gif"}],"author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/","name":"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-11-17T01:08:23+00:00","dateModified":"2024-04-29T02:20:01+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache\u7684MaxClients\u7684\u9002\u5f53\u503c\u662f\u591a\u5c11\uff1f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache%e7%9a%84maxclients%e7%9a%84%e9%80%82%e5%bd%93%e5%80%bc%e6%98%af%e5%a4%9a%e5%b0%91%ef%bc%9f\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36547"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36547\/revisions"}],"predecessor-version":[{"id":84686,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36547\/revisions\/84686"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}