本地连接过多的问题

本地连接过多的问题

我的服务器 (VPS) 有问题。它非常慢。

使用 netstat 检查连接,发现有很多内部连接。我不明白为什么!

所有这些连接都正常吗?

# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp      174      0 localhost:80        localhost:50035     ESTABLISHED -               
tcp        0      0 localhost:80        localhost:49523     FIN_WAIT2   -               
tcp      174      0 localhost:80        localhost:50034     ESTABLISHED -               
tcp        0      0 localhost:80        localhost:49522     FIN_WAIT2   -               
tcp      174      0 localhost:80        localhost:50045     ESTABLISHED -               
tcp      174      0 localhost:80        localhost:50044     ESTABLISHED -               
tcp      174      0 localhost:80        localhost:50043     ESTABLISHED -               
tcp        0      0 localhost:80        localhost:49531     FIN_WAIT2   -               
tcp      174      0 localhost:80        localhost:50042     ESTABLISHED -               
tcp    14494      0 localhost:49448     localhost:80        CLOSE_WAIT  24351/apache2   
tcp    14556      0 localhost:49449     localhost:80        CLOSE_WAIT  24351/apache2   
tcp    25098      0 localhost:49450     localhost:80        CLOSE_WAIT  24351/apache2   
tcp    26914      0 localhost:49444     localhost:80        CLOSE_WAIT  24351/apache2   
tcp    21143      0 localhost:49445     localhost:80        CLOSE_WAIT  24351/apache2   
tcp    17907      0 localhost:49446     localhost:80        CLOSE_WAIT  24351/apache2   
tcp    22300      0 localhost:49519     localhost:80        CLOSE_WAIT  -               
tcp    25098      0 localhost:49528     localhost:80        CLOSE_WAIT  -               
tcp      861      0 localhost:49531     localhost:80        CLOSE_WAIT  24170/apache2   
tcp    17907      0 localhost:49524     localhost:80        CLOSE_WAIT  -               
tcp    16336      0 localhost:49525     localhost:80        CLOSE_WAIT  -               
tcp    14494      0 localhost:49526     localhost:80        CLOSE_WAIT  -               
tcp    14556      0 localhost:49527     localhost:80        CLOSE_WAIT  -               
tcp    51238      0 localhost:49520     localhost:80        CLOSE_WAIT  -               
tcp    18377      0 localhost:49521     localhost:80        CLOSE_WAIT  -               
tcp        0      0 localhost:50003     localhost:80        ESTABLISHED 24417/apache2   
tcp        0      0 localhost:49839     localhost:80        ESTABLISHED -               
tcp      780      0 localhost:49838     localhost:80        ESTABLISHED -               
tcp     3348      0 localhost:49837     localhost:80        ESTABLISHED -               
tcp      925      0 localhost:49836     localhost:80        ESTABLISHED -               
tcp     4159      0 localhost:49835     localhost:80        ESTABLISHED -               
tcp     1960      0 localhost:49834     localhost:80        ESTABLISHED -               

这只是一份简历,有上百份。

我该如何修复它?

多谢!

编辑:问题似乎是 apache 进程的 CPU 使用率过高。

top - 09:59:17 up 20:06,  1 user,  load average: 49.51, 41.65, 33.52
Tasks:  73 total,  27 running,  46 sleeping,   0 stopped,   0 zombie
Cpu(s): 91.4%us,  8.6%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1048576k total,   732896k used,   315680k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7978 www-data  16   0 93832  28m 6656 R 11.2  2.8   0:20.99 apache2
 8182 www-data  16   0 93812  27m 6768 R 11.2  2.7   0:07.19 apache2
 8163 www-data  16   0 90068  23m 5412 R 10.9  2.3   0:07.00 apache2
 8095 www-data  16   0 88584  23m 6544 S  3.8  2.3   0:19.31 apache2
 8097 www-data  15   0 88204  23m 6524 S  3.5  2.3   0:17.58 apache2
 8175 www-data  16   0 90780  23m 5900 S  3.5  2.3   0:07.40 apache2
 8058 www-data  15   0 84916  21m 8388 S  3.2  2.1   0:18.26 apache2
 8018 www-data  17   0 89460  23m 6388 R  2.9  2.3   0:15.99 apache2
 8112 www-data  16   0 89308  24m 7276 S  2.9  2.4   0:17.65 apache2
 7880 www-data  17   0 99532  34m 8364 R  2.6  3.3   0:26.61 apache2
 7885 www-data  17   0 94680  28m 7892 R  2.6  2.7   0:28.58 apache2
 7916 www-data  17   0 90388  24m 7932 R  2.6  2.4   0:35.33 apache2
 8002 www-data  17   0 95820  30m 7176 R  2.6  3.0   0:13.93 apache2
 8022 www-data  17   0 96336  31m 7728 R  2.6  3.1   0:21.56 apache2
 8035 www-data  17   0 88728  23m 7464 R  2.6  2.3   0:22.86 apache2
 8066 www-data  17   0 96124  29m 6676 R  2.6  2.9   0:19.17 apache2
 8070 www-data  17   0 93432  26m 6600 R  2.6  2.6   0:17.57 apache2
 8092 www-data  17   0 92668  26m 6260 R  2.6  2.6   0:20.82 apache2
 8142 www-data  17   0 96536  28m 7024 R  2.6  2.7   0:09.55 apache2
 8158 www-data  17   0 84420  18m 5480 S  2.6  1.8   0:06.44 apache2
 8161 www-data  16   0 88452  22m 5924 S  2.6  2.2   0:09.34 apache2
 8171 www-data  17   0 91236  25m 5648 R  2.6  2.4   0:05.09 apache2
 8088 www-data  17   0 88132  22m 6456 S  2.2  2.2   0:14.52 apache2
 8009 www-data  17   0 91484  26m 6468 S  1.9  2.5   0:17.19 apache2
 8116 www-data  16   0 91204  24m 7176 S  1.6  2.4   0:15.72 apache2
 8029 www-data  17   0 92784  26m 7708 S  1.3  2.6   0:23.54 apache2
 7964 www-data  17   0 86836  22m 7676 R  1.0  2.2   0:24.60 apache2
 8032 www-data  16   0 84836  20m 7564 S  1.0  2.0   0:17.05 apache2
 8084 www-data  17   0 99564  32m 6796 R  1.0  3.2   0:15.57 apache2
 8148 www-data  15   0 91424  26m 6356 S  1.0  2.5   0:08.83 apache2
 8062 www-data  17   0 88708  23m 7592 S  0.6  2.3   0:13.60 apache2
 8108 www-data  17   0 92492  25m 6832 S  0.6  2.5   0:18.80 apache2
 8153 www-data  17   0 82604  16m 5364 S  0.6  1.6   0:07.91 apache2
 8006 www-data  17   0 85296  20m 7052 S  0.3  2.0   0:18.04 apache2
 8014 www-data  17   0 88696  25m 8124 S  0.3  2.4   0:19.57 apache2

答案1

如果您在本地 Web 服务器上运行某些资源密集型进程,那么这些连接可能就是问题所在。但连接数过多并不是什么坏事(连接数也不算多),问题在于过多的连接数造成的。

如果您的机器运行缓慢,请查看负载。检查 的top输出中是否有高 CPU 进程。查看 php 是否用完了所有内存。简而言之,检查整个机器。

您可以lsof -i以 root 身份运行,获取有关该 Web 服务器以及谁在联系它的更多信息。但您大概已经知道了,因为(大概)您已经设置了它。

答案2

某些 PHP 脚本正在通过 http 访问您的 Web 服务器(可能使用 curl 函数?),或者您在 Apache 配置文件或某些.htaccess文件中以错误的方式配置了 ErrorDocument 页面。

基本上,如果您以这种方式配置ErrorDocuments:

ErrorDocument 404 http://yourhost/someerrorpage.html

但这someerrorpage.html并不存在,一个很好的小递归循环已经准备好了,并且可以非常有效地降低你的服务器性能。

您读过 Apache 日志吗?如果使用您选择的文本查看器浏览日志没有发现任何内容,请尝试将您的访问日志提供给webalizer其他分析器并查看访问最多的 URL。如果有大量重复错误,还请查看错误日志。

相关内容