VPS 经常命中 tcpsndbuf

VPS 经常命中 tcpsndbuf

在我运行的 VPS 上,我最近经常达到 tcpsndbuf 的软限制和硬限制,导致服务器在负载上升到 45 甚至更高时几乎无法访问。我已经尝试限制允许的 Apache 连接数,但在使用新值重新启动服务器 5 分钟后,一切又变得疯狂。现在我有:

KeepAlive off
<IfModule mpm_prefork_module>
    StartServers       5
    MinSpareServers    5
    MaxSpareServers    10
    ServerLimit 20
    MaxClients 20
    MaxRequestsPerChild   1000
 </IfModule>

该服务器当前主要使用 apache 推送大约 1.5 TB 的 20kb-15MB 文件,使用 vsftpd 推送 partyl 文件,并且托管大约 5 个 wordpress 博客,每天接待大约 300-800 名访客。

/proc/user_beancounters 说:

uid  resource                     held              maxheld              barrier                limit              failcnt
62327:  kmemsize                 27311616             27428538            193273527            214748364                    0
lockedpages                     0                    0                 2059                 2059                    0
privvmpages                316229               316352              1048576              1101004                    0
shmpages                      745                  745               131072               131072                    0
dummy                           0                    0  9223372036854775807  9223372036854775807                    0
numproc                        95                   95                  650                  650                    0
physpages                  154998               155013                    0  9223372036854775807                    0
vmguarpages                     0                    0               524288  9223372036854775807                    0
oomguarpages               154999               155014  9223372036854775807  9223372036854775807                    0
numtcpsock                     30                   30                  700                  700                    0
numflock                        7                    8                 1000                 1100                    0
numpty                          1                    1                  102                  102                    0
numsiginfo                      0                    0                 1024                 1024                    0
tcpsndbuf                 1573056              1619200              6720000              9408000          23663960828
tcprcvbuf                  491520               491520              6720000              9408000                   42
othersockbuf               224864               226176              5760000              8064000                    0
dgramrcvbuf                     0                 8480              5376000              5376000                    0
numothersock                  139                  139                  600                  600                    0
dcachesize                1319995              1338775             28991028             32212254                    0
numfile                      3125                 3145                17600                17600                    0
dummy                           0                    0                    0                    0                    0
dummy                           0                    0                    0                    0                    0
dummy                           0                    0                    0                    0                    0
numiptent                      71                   71  9223372036854775807  9223372036854775807                    0

减少 tcpsndbuf 要求的最有效方法是什么?

附注:每当我达到 tcpsndbuf 限制时,我通过 wget 和类似工具下载文件的大多数尝试都会以“没有可用缓冲区空间”之类的消息结束。

相关内容