缓慢的网站负载和高内存使用率

我的网站已经放慢了最后几天…一些图像不显示…我得到了

408 Request Time-out: Server timeout waiting for the HTTP request from the client 

几次之前从未发生过的事情。

我做了一些性能检查,基本上是在SSH的顶级命令

这是结果

http://up.akstube.com/images/vdtebe9sr10si1eyycd.jpg

因为你可以看到内存使用率是非常高的…或者我认为是。

我已经重新启动服务器…它下降了,但之后,它再次上升….(这是约一个小时后重新启动)

http://up.akstube.com/images/49xjeylxy0st7vwn4ojl.png

半小时后=>

  top - 16:14:22 up 1:56, 2 users, load average: 0.62, 0.90, 1.15 Tasks: 303 total, 1 running, 302 sleeping, 0 stopped, 0 zombie Cpu(s): 8.0%us, 0.2%sy, 0.0%ni, 91.4%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Mem: 32840004k total, 21037648k used, 11802356k free, 430832k buffers Swap: 1050616k total, 0k used, 1050616k free, 16527108k cached 

马上

 [root@ns4008353 ~]# top top - 16:33:25 up 2:15, 2 users, load average: 0.88, 0.94, 0.98 Tasks: 303 total, 3 running, 300 sleeping, 0 stopped, 0 zombie Cpu(s): 6.8%us, 0.2%sy, 0.0%ni, 92.8%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 32840004k total, 22388160k used, 10451844k free, 434964k buffers Swap: 1050616k total, 0k used, 1050616k free, 17324104k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7532 mysql 20 0 3750m 492m 5556 S 18.0 1.5 49:53.58 mysqld 12903 apache 20 0 232m 40m 4864 S 16.3 0.1 0:56.74 httpd 7748 apache 20 0 235m 43m 5256 S 11.6 0.1 1:33.36 httpd 8010 apache 20 0 262m 70m 4856 R 6.7 0.2 1:32.05 httpd 7747 apache 20 0 235m 43m 5220 S 1.3 0.1 1:06.37 httpd 7749 apache 20 0 222m 30m 5164 S 1.3 0.1 1:58.53 httpd 7996 apache 20 0 250m 59m 5476 S 1.3 0.2 1:37.37 httpd 10 root 20 0 0 0 0 S 0.3 0.0 0:09.72 rcu_sched 7714 apache 20 0 265m 73m 4972 S 0.3 0.2 1:34.53 httpd 7905 named 20 0 669m 24m 3020 S 0.3 0.1 0:02.01 named 7999 apache 20 0 232m 40m 4968 S 0.3 0.1 1:17.67 httpd 20865 root 20 0 0 0 0 S 0.3 0.0 0:01.05 kworker/2:2 21491 root 20 0 15212 1308 852 S 0.3 0.0 0:01.38 top 23810 root 20 0 15212 1340 852 R 0.3 0.0 0:00.07 top 1 root 20 0 19404 1568 1268 S 0.0 0.0 0:00.58 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 

自由的

 [root@ns4008353 ~]# free -m total used free shared buffers cached Mem: 32070 21897 10173 0 424 16955 -/+ buffers/cache: 4516 27553 Swap: 1025 0 1025 

你认为这是反应慢的原因吗? 是否有任何意见,以获得更多有关使用内存的信息?


我有一个专门的服务器:

 Processor Name Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz Vendor ID GenuineIntel Processor Speed (MHz) 1600.000 Total Memory 32840004 kB Free Memory 10416752 kB Total Swap Memory 1050616 kB Free Swap Memory 1050616 kB System Uptime 0 Days, 2 Hours and 22 Minutes Apache 2.2.24 Running DirectAdmin 1.43.0 Running Exim 4.76 Running MySQL 5.5.31 Running Named 9.8.2rc1 Running ProFTPd 1.3.4d Running sshd Running dovecot 2.2.4 Running 

安装PHP 5.3.26

在查看我的日志文件后,我看到了很多这个错误

 [Sat Sep 28 00:15:41 2013] [error] [client 66.249.73.162] Request exceeded the limit of 10 internal redirects due to probable co nfiguration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace 

它通常是.htaccess文件,重新注入一个更改的请求URI,检查出来,也可以重置您的configuration文件

您的问题描述是缓慢的HTTP请求,但正如您所示,CPU和内存不会耗尽。 所以有几件事要检查:

  • 确保请求确实很慢。 在httpd.conf中,find这一行:

LogFormat“%h%l%u%t”%r \“%s%b”常见

并在%b之后添加%D(但在结尾的引号内)。 请参阅http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

然后重新载入/重新启动httpd,你的access_log文件现在应该显示每个响应在最后一列中以微秒为单位的时间。 确认这些很慢。 也许只有一些types的请求很慢? 我注意到MySQL正在使用一些CPU,所以也许有一种types的请求正在缓慢的数据库查询?

  • 如果上面的反应真的很慢,并没有明显的模式(例如特定页面),那么你需要确定他们在哪里慢。 %D时间包括读取来自客户端的请求,提供文件(包括任何应用程序代码或数据库查询)和写入响应的所有内容,所以它只是告诉你有一个放缓,不一定在哪里。 所以现在你需要隔离减速的地方。 我会先检查应用程序。 同时检查MySQL慢日志(如果未启用,则启用它)。

  • 检查你的error_log – 也许有一些应用程序超时或其他错误。

  • 如果您没有任何运气,您也可以定期运行pstack ${PID}以了解httpd在做什么。

  • 最后,你可以使用tcpdump和类似Wireshark的东西来隔离放慢的地方,虽然这会有点乏味。 我想也有一个httpd模块,在请求中分解时间,但我现在找不到它,并没有看到它在内置模块列表中。

您的内存使用率不高,您应该跳过该部分进行故障排除,并尝试Inforfinity的build议。

Linux内核倾向于占用可用的磁盘caching未使用的内存。 它使系统更快。 如果任何应用程序需要内存,它会从caching本身。 所以基本上你的记忆力不低。 考虑一下free -m的输出

– / + buffers / cache:4516 27553

正在使用4516MB的实际RAM,27553是实际的可用内存。 接近17G被caching。

尝试在您的Web服务器上进行性能testing。 使用httperf进行基准testing。

httperf –server yoursite.com –port 80 –num-conns 100 –rate 10