如何在我的服务器上最大化 Apache 性能 - 需要计算请

如何在我的服务器上最大化 Apache 性能 - 需要计算请

我有一台 Sun T5140 服务器,配备 8GB 内存和两个 4 核 T 系列 CPU(最多 128 个线程)。此服务器是专用的 Web 服务器。基于我愿意将服务器物理内存的 1/2 分配给 Apache(4GB)的前提,我该如何计算以下 Apache 设置以充分利用这 4GB 内存?我在网上找不到明确的计算方法。PS,我在 Solaris 10 OS 上使用 Apache 2.2.22。

StartServers         ??
MinSpareServers      ??
MaxSpareServers      ??
ServerLimit          ??
MaxClients           ??
MaxRequestsPerChild  ??


(XXXXXXXXXXXX)-root> ps -elf | head -n 1 ; ps -elf | grep http
 F S      UID   PID  PPID   C PRI NI     ADDR     SZ    WCHAN    STIME TTY         TIME CMD
 0 S  webuser 29751 12656   0  40 20        ?  25288        ? 10:53:17 ?           0:03 /usr/local/apache2/bin/httpd -k sta
 0 S  webuser   420 12656   0  45 20        ?  24136        ? 10:53:22 ?           0:02 /usr/local/apache2/bin/httpd -k sta
 0 S  webuser 18563 12656   0  40 20        ?  27952        ? 10:51:51 ?           0:12 /usr/local/apache2/bin/httpd -k sta
 0 S  webuser 18837 12656   0  40 20        ?  24160        ? 10:51:53 ?           0:08 /usr/local/apache2/bin/httpd -k sta
 0 S  webuser  2357 12656   0  48 20        ?  22976        ? 10:53:37 ?           0:01 /usr/local/apache2/bin/httpd -k sta
 0 S  webuser 18838 12656   0  40 20        ?  24176        ? 10:51:53 ?           0:06 /usr/local/apache2/bin/httpd -k sta
 0 S  webuser 29750 12656   0  40 20        ?  23016        ? 10:53:17 ?           0:02 /usr/local/apache2/bin/httpd -k sta



   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
  9555 webuser   243M  142M sleep   50    0   0:00:44 1.0% httpd/1
 19131 webuser   229M  118M cpu102  30    0   0:00:20 0.9% httpd/1
  9538 webuser   232M  130M cpu74    0    0   0:00:46 0.8% httpd/1
  9550 webuser   230M  128M cpu24   39    0   0:00:55 0.6% httpd/1
  9534 webuser   232M  130M cpu69    0    0   0:00:34 0.6% httpd/1
  9556 webuser   245M  142M cpu2    24    0   0:00:47 0.6% httpd/1
  2259 webuser   232M  122M cpu87    9    0   0:01:08 0.5% httpd/1
 19038 webuser   229M  118M sleep   59    0   0:00:16 0.5% httpd/1
  2149 webuser   232M  121M sleep   59    0   0:01:13 0.5% httpd/1
 19036 webuser   232M  120M sleep   59    0   0:00:16 0.5% httpd/1
  9526 webuser   230M  118M sleep   59    0   0:00:34 0.5% httpd/1
 19034 webuser   208M   97M cpu22    0    0   0:00:09 0.4% httpd/1
  9563 webuser   232M  129M sleep   59    0   0:00:26 0.4% httpd/1
  4101 webuser   234M  132M sleep   39    0   0:01:04 0.4% httpd/1
 15735 webuser   232M  120M sleep   39    0   0:00:28 0.4% httpd/1
  2042 webuser   232M  122M sleep   59    0   0:00:49 0.3% httpd/1
 26119 webuser   232M  131M cpu99    9    0   0:01:42 0.3% httpd/1
 19035 webuser   229M  117M sleep   39    0   0:00:12 0.3% httpd/1
 19134 webuser   229M  116M sleep   39    0   0:00:09 0.2% httpd/1
  9553 webuser   229M  126M sleep   39    0   0:00:40 0.2% httpd/1
 18942 webuser   229M  117M sleep   39    0   0:00:07 0.2% httpd/1
  9308 webuser   230M  127M sleep   49    0   0:00:32 0.2% httpd/1
  9564 webuser   246M  133M sleep   59    0   0:00:33 0.2% httpd/1
  7154 webuser   229M  127M sleep   59    0   0:00:29 0.2% httpd/1
 19040 webuser   229M  116M sleep   59    0   0:00:08 0.2% httpd/1
  1275 root     3368K 2608K cpu13    0    0   0:25:42 0.2% http_services.s/1
  9531 webuser   232M  129M sleep   49    0   0:00:19 0.2% httpd/1
 19146 webuser   198M   85M cpu5    39    0   0:00:03 0.2% httpd/1
 19135 webuser   203M   91M sleep   49    0   0:00:05 0.1% httpd/1
  9545 webuser   232M  128M sleep   59    0   0:00:21 0.1% httpd/1
  9543 webuser   230M  117M sleep   59    0   0:00:13 0.1% httpd/1
  9301 webuser   229M  128M sleep   59    0   0:00:16 0.1% httpd/1
  6685 tomcat    615M  289M sleep   59    0   0:10:55 0.1% jsvc/58
  9410 webuser   232M  121M sleep   59    0   0:00:16 0.0% httpd/1
 17811 webuser   156M   11M sleep   39    0   0:00:00 0.0% httpd/1
Total: 98 processes, 338 lwps, load averages: 14.38, 12.06, 8.03

详细说明每个过程正在做什么-例如这个:

 20225 webuser   189M   89M sleep   59    0   0:00:38 0.2% httpd/1

这里使用 pmap 命令显示:

(XXXXXXXXX-01)-root> pmap -x 20225
20225:  /usr/local/apache2/bin/httpd -k start
20225:  /usr/local/apache2/bin/httpd -k start
20225:  /usr/local/apache2/bin/httpd -k start
20225:  /usr/local/apache2/bin/httpd -k start
20225:  /usr/local/apache2/bin/httpd -k start
 Address  Kbytes     RSS    Anon  Locked Mode   Mapped File
00010000     648     648       -       - r-x--  httpd
000C0000      32      32      32       - rwx--  httpd
000C8000      32      32      16       - rwx--    [ heap ]
000D0000   37440   37376   36864       - rwx--    [ heap ]
F5400000  131072   50088       -       - rw-s-  dev:361,5 ino:45405806
FD630000      64      64       -       - rw-s-    [ anon ]
FD650000       8       8       -       - rw-s-    [ anon ]
FD690000       8       8       -       - rw-s-  dev:256,65544 ino:282776
FD6A0000       8       8       -       - r-x--  mod_expires.so
FD6B0000       8       8       -       - rwx--  mod_expires.so
FD6C0000      96      96       -       - r-x--  xcache.so
FD6E6000       8       8       8       - rwx--  xcache.so
FD6E8000       8       8       8       - rwx--  xcache.so
FD6F0000      64      64      64       - rwx--    [ anon ]
FD710000      64      64       -       - rwx--    [ anon ]
FD730000      16      16       -       - r-x--  mod_deflate.so
FD742000      16      16       -       - rwx--  mod_deflate.so
FD750000     368     352       -       - r-x--  mod_jk-1.2.31-httpd-2.2.X.so
FD7BA000      16      16       8       - rwx--  mod_jk-1.2.31-httpd-2.2.X.so
FD7BE000       8       8       8       - rwx--  mod_jk-1.2.31-httpd-2.2.X.so
FD7D0000       8       8       -       - r-x--  libavl.so.1
FD7E2000       8       8       -       - rwx--  libavl.so.1
FD7F0000      16      16       -       - r-x--  libmp.so.2
FD804000       8       8       -       - rwx--  libmp.so.2
FD810000      32      32       -       - r-x--  libuutil.so.1
FD828000       8       8       8       - rwx--  libuutil.so.1
FD830000       8       8       -       - r-x--  libdoor.so.1
FD842000       8       8       -       - rwx--  libdoor.so.1
FD850000      96      96       -       - r-x--  libscf.so.1
FD878000       8       8       -       - rwx--  libscf.so.1
FD880000       8       8       -       - rwx--    [ anon ]
FD890000       8       8       -       - r-x--  libmd_psr.so.1
FD8A2000       8       8       -       - rwx--  libmd_psr.so.1
FD8B0000     192      64       -       - r-x--  libfontconfig.so.1.4.4
FD8EE000      16      16       -       - rwx--  libfontconfig.so.1.4.4
FD900000    1248     320       -       - r-x--  libcrypto.so.0.9.8
FDA46000      96      96       -       - rwx--  libcrypto.so.0.9.8
FDA5E000       8       -       -       - rwx--  libcrypto.so.0.9.8
FDA70000     120      64       -       - r-x--  libjpeg.so.62.0.0
FDA9C000       8       8       -       - rwx--  libjpeg.so.62.0.0
FDAA0000     264     128       -       - r-x--  libssl.so.0.9.8
FDAF2000      24      24       -       - rwx--  libssl.so.0.9.8
FDB00000    1288     904       -       - r-x--  libxml2.so.2.7.7
FDC50000      56      56       8       - rwx--  libxml2.so.2.7.7
FDC70000      56      48       -       - r-x--  libsec.so.1
FDC8E000      16      16       -       - rwx--  libsec.so.1
FDC92000       8       -       -       - rwx--  libsec.so.1
FDCA0000     128     128       -       - r-x--  libssh2.so.1.0.1
FDCCE000      16      16       -       - rwx--  libssh2.so.1.0.1
FDCE0000      24      24       -       - r-x--  libgen.so.1
FDCF6000       8       8       -       - rwx--  libgen.so.1
FDD00000      88      72       -       - r-x--  libsasl2.so.2.0.21
FDD24000       8       8       -       - rwx--  libsasl2.so.2.0.21
FDD30000     192     192       -       - r-x--  libidn.so.11.6.2
FDD6E000      16      16       -       - rwx--  libidn.so.11.6.2
FDD80000    1296     200       -       - r-x--  libX11.so.4
FDED4000      24      24       -       - rwx--  libX11.so.4
FDEE0000       8       -       -       - rw---  libX11.so.4
FDF00000     440     392       -       - r-x--  libfreetype.so.6.6.0
FDF7C000      24      24       -       - rwx--  libfreetype.so.6.6.0
FDF90000     328     320       -       - r-x--  libcurl.so.4.2.0
FDFF0000      24      24       8       - rwx--  libcurl.so.4.2.0
FE000000    8832    8768       -       - r-x--  libphp5.so
FE8AE000     376     376      72       - rwx--  libphp5.so
FE90C000      16       8       -       - rwx--  libphp5.so
FE910000      64      64      64       - rwx--  libphp5.so
FE920000       8       8       8       - rwx--  libphp5.so
FE930000     248      80       -       - r-x--  libjpeg.so.8.0.1
FE97C000       8       8       -       - rwx--  libjpeg.so.8.0.1
FE980000      80      80       -       - r-x--  libz.so.1.2.5
FE9A2000       8       8       -       - rwx--  libz.so.1.2.5
FE9B0000     144     136       -       - r-x--  libpng12.so.0.44.0
FE9E2000       8       8       -       - rwx--  libpng12.so.0.44.0
FE9F0000     120     112       -       - r-x--  libgd.so.2.0.0
FEA1C000     128      24       -       - rwx--  libgd.so.2.0.0
FEA3C000       8       -       -       - rwx--  libgd.so.2.0.0
FEA40000     240     216       -       - r-x--  libldap-2.4.so.2.5.6
FEA8A000      16      16       8       - rwx--  libldap-2.4.so.2.5.6
FEA90000     240     240       -       - r-x--  libmysqlclient.so.15.0.0
FEADA000     160     160      72       - rwx--  libmysqlclient.so.15.0.0
FEB10000       8       8       -       - rw-s-    [ anon ]
FEB20000      56      16       -       - r-x--  libXpm.so.4.11
FEB3C000       8       8       -       - rwx--  libXpm.so.4.11
FEB40000      40      32       -       - r-x--  libintl.so.8.0.2
FEB58000       8       8       -       - rwx--  libintl.so.8.0.2
FEB60000       8       8       -       - rwx--    [ anon ]
FEB70000      40      40       -       - r-x--  liblber-2.4.so.2.5.6
FEB88000       8       8       -       - rwx--  liblber-2.4.so.2.5.6
FEBA0000     240     240       -       - r-x--  libresolv.so.2
FEBE0000       8       8       -       - rwx--    [ anon ]
FEBEC000      16      16       -       - rwx--  libresolv.so.2
FEC00000    1216    1168       -       - r-x--  libc.so.1
FED30000      40      40      32       - rwx--  libc.so.1
FED3A000       8       8       -       - rwx--  libc.so.1
FED40000       8       8       -       - rw-s-    [ anon ]
FED50000      80      80       -       - r-x--  libmd.so.1
FED70000       8       8       -       - rwx--    [ anon ]
FED74000       8       8       -       - rwx--  libmd.so.1
FED80000     584     584       -       - r-x--  libnsl.so.1
FEE22000      40      40      16       - rwx--  libnsl.so.1
FEE2C000      24      16      16       - rwx--  libnsl.so.1
FEE40000      64      64       -       - rwx--    [ anon ]
FEE60000      32      32       -       - r-x--  libaio.so.1
FEE70000       8       8       -       - rwx--    [ anon ]
FEE78000       8       8       8       - rwx--  libaio.so.1
FEE80000      40      32       -       - r-x--  libgcc_s.so.1
FEE90000       8       8       -       - rwx--    [ anon ]
FEE98000       8       8       -       - rwx--  libgcc_s.so.1
FEEA0000      48      48       -       - r-x--  libsocket.so.1
FEEB0000       8       8       -       - rwx--    [ anon ]
FEEBC000       8       8       -       - rwx--  libsocket.so.1
FEEC0000      24      24       -       - r-x--  librt.so.1
FEED0000       8       8       -       - r--s-  dev:361,6 ino:57121908
FEED6000       8       8       -       - rwx--  librt.so.1
FEEE0000       8       8       -       - r-x--  libsendfile.so.1
FEEF2000       8       8       -       - rwx--  libsendfile.so.1
FEF00000     912      64       -       - r-x--  libiconv.so.2.5.0
FEFF2000       8       8       -       - rwx--  libiconv.so.2.5.0
FF000000     144     144       -       - r-x--  libapr-1.so.0.4.5
FF032000      16      16       8       - rwx--  libapr-1.so.0.4.5
FF040000     128      64       -       - r-x--  libexpat.so.1.5.2
FF06E000      16      16       -       - rwx--  libexpat.so.1.5.2
FF080000     608     328       -       - r-x--  libm.so.2
FF126000      24      24       -       - rwx--  libm.so.2
FF130000      16      16       -       - r-x--  libuuid.so.1
FF140000       8       8       -       - rwx--    [ anon ]
FF144000       8       8       -       - rwx--  libuuid.so.1
FF150000     112     104       -       - r-x--  libaprutil-1.so.0.4.1
FF170000      24      16      16       - rwx--    [ anon ]
FF17A000       8       8       8       - rwx--  libaprutil-1.so.0.4.1
FF180000    1432    1352       -       - r-x--  libcrypto.so.1.0.0
FF2F0000       8       8       -       - rwx--    [ anon ]
FF2F4000      88      88      16       - rwx--  libcrypto.so.1.0.0
FF30A000       8       8       8       - rwx--  libcrypto.so.1.0.0
FF310000       8       8       -       - r-x--  libc_psr.so.1
FF320000       8       8       -       - r-x--  libdl.so.1
FF32E000       8       8       -       - rwxs-    [ anon ]
FF332000       8       8       -       - rwx--  libdl.so.1
FF340000     296     296       -       - r-x--  libssl.so.1.0.0
FF390000       8       8       -       - rwx--    [ anon ]
FF398000      24      24       -       - rwx--  libssl.so.1.0.0
FF3A0000      16      16       -       - r-x--  libpthread.so.1
FF3B0000     208     208       -       - r-x--  ld.so.1
FF3F0000       8       8       -       - rwx--    [ anon ]
FF3F4000       8       8       8       - rwx--  ld.so.1
FF3F6000       8       8       8       - rwx--  ld.so.1
FFBF0000      64      64      64       - rwx--    [ stack ]
-------- ------- ------- ------- -------
total Kb  193920  108232   37464       -

答案1

根据ps 手册页,SZ 列为:

The size (in  pages) of  the  swappable
process's image in main memory.

您可以使用pagesize 命令获取系统上的默认页面大小,但查看 ps 输出中的 RSS 列会更有帮助。

无论如何,这将让您了解每个 Apache 进程正在使用多少 RAM,但由于共享内存并且取决于您的配置,实际总使用量可能会有很大差异。

了解以下内容会很有帮助:1) Apache 在做什么?2) 如果它是一台专用机器(仅限 Apache),为什么要保留 4GB 的 RAM?

无论如何,您实际上只需要担心 ServerLimit 和 MaxClients。其他设置旨在最大限度地减少 Apache 终止和启动新服务器,这会占用资源。

如果您假设每个进程有 80MB 的 RAM(这很荒谬,但并非不可能 —— 例如,Drupal 站点 + mod_php + 无缓存可能会使用那么多):

StartServers         30
MinSpareServers      10
MaxSpareServers      20
ServerLimit          50
MaxClients           50
MaxRequestsPerChild  1000

尝试一下,使用 top 或 free 观察内存使用情况(忽略缓冲区和缓存),并逐渐增加 MaxClients 和 ServerLimit(保持它们相同)。请记住,这种方法过于保守——MaxClients 的值比可能的安全值要低得多。一旦达到 MaxClients 值,访问者就会看到错误,因此如果网站非常繁忙,请从更高的值开始——您有足够的 RAM 和交换空间。

答案2

答案是“这取决于您要做什么”,这很可能也是您被否决的原因。您没有指定托管的内容类型(静态?动态?php?代理?),您期望的负载类型等。这有点像问在给定 X 个硬盘驱动器和 Y 速度的情况下哪种类型的 RAID 最好,而没有指定服务器正在执行的工作以及您的要求是什么。例如,您已经加载mod_jk了,jsvc甚至没有提到这是一台应用服务器,假设它们不是只是坐在那里什么也不做。

您可以收到许多答案,这些答案将详尽地涵盖一种潜在方法和/或 MPM,但除非您将问题集中在特定用例上,否则最终将变成一场非常开放式的讨论,而无法得到“正确”的答案。

相关内容