Linux xxx.xxx.xxx 2.6.18-128.1.6.el5 #1 SMP 2009 年 4 月 1 日星期三 09:19:18 EDT i686 i686 i386 GNU/Linux
问题:
- 当我使用 SSH 连接时,每个命令都需要 2 分钟才能运行!
- 重启服务器平均需要16分钟。
- 我在这个服务器(PHP(Joomla)和 Apache/2.2.8(Unix))上有一个网页,每个页面的加载需要 1 分钟。
- 我猜测这是因为它最初与 IPv6 连接,因为运行命令“lsmod | grep v6”时显示了以下内容:
ipv6 261473 125 xfrm_nalgo 13381 1 ipv6
但使用这个网站(http://techno.mayix.net/deshabilitar-ipv6-en-redhatcentos/),我禁用了 IPv6 连接,因为运行命令“lsmod | grep v6”时没有显示任何内容。但速度慢的问题仍然存在。- 当我运行命令 top 时,它给了我这个:
top - 09:40:08 up 10 min, 1 user, load average: 18.89, 14.99, 8.02
Tasks: 153 total, 13 running, 140 sleeping, 0 stopped, 0 zombie
Cpu(s): 57.1%us, 42.4%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.2%hi, 0.3%si, 0.0%st
Mem: 1555380k total, 667200k used, 888180k free, 18332k buffers
Swap: 2048276k total, 0k used, 2048276k free, 193784k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2265 mysql 15 0 133m 23m 6052 S 35.8 1.5 2:43.58 mysqld
2868 apache 15 0 42092 21m 4520 S 18.2 1.4 0:19.51 httpd
3112 apache 16 0 41844 21m 4536 S 18.2 1.4 0:09.18 httpd
2506 apache 15 0 42108 21m 4516 S 17.9 1.4 0:23.15 httpd
3471 apache 16 0 41732 20m 4252 S 17.9 1.4 0:02.59 httpd
2567 apache 15 0 42060 21m 4496 S 16.9 1.4 0:20.84 httpd
2625 apache 16 0 41840 21m 4568 R 16.9 1.4 0:16.53 httpd
3461 apache 15 0 41460 20m 4260 S 16.6 1.4 0:02.17 httpd
2593 apache 15 0 42084 21m 4480 S 16.3 1.4 0:15.37 httpd
2429 apache 15 0 42040 21m 4484 S 9.8 1.4 0:14.31 httpd
3477 apache 18 0 36900 15m 3792 R 5.5 1.0 0:01.24 httpd
3499 apache 19 0 37432 16m 3840 R 3.3 1.1 0:01.40 httpd
2417 apache 15 0 40544 20m 4508 S 1.3 1.3 0:18.89 httpd
3520 root 15 0 2420 1060 800 R 1.3 0.1 0:00.46 top
3464 apache 15 0 41332 20m 4432 S 0.7 1.4 0:04.03 httpd
2423 operador 15 0 10032 1596 1024 S 0.3 0.1 0:00.54 sshd
2463 root 16 0 2052 636 556 S 0.3 0.0 0:01.84 hald-addon-stor
2482 apache 15 0 37224 16m 4508 S 0.3 1.1 0:17.95 httpd
1 root 15 0 2152 672 580 S 0.0 0.0 0:02.09 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.10 migration/0
3 root 34 19 0 0 0 R 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.05 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0.0 0.0 0:00.06 events/0
9 root 10 -5 0 0 0 S 0.0 0.0 0:00.04 events/1
10 root 10 -5 0 0 0 S 0.0 0.0 0:00.03 khelper
11 root 14 -5 0 0 0 S 0.0 0.0 0:00.02 kthread
15 root 10 -5 0 0 0 S 0.0 0.0 0:00.08 kblockd/0
16 root 10 -5 0 0 0 S 0.0 0.0 0:00.05 kblockd/1
17 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
74 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
75 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/1
78 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
80 root 14 -5 0 0 0 S 0.0 0.0 0:00.03 kseriod
146 root 19 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
147 root 15 0 0 0 0 S 0.0 0.0 0:00.50 pdflush
148 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
149 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
150 root 14 -5 0 0 0 S 0.0 0.0 0:00.00 aio/1
305 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
349 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 mpt_poll_0
350 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
354 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
355 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 ata/1
356 root 12 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
363 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 kstriped
376 root 13 -5 0 0 0 S 0.0 0.0 0:00.00 ksnapd
当我在我的服务器中运行“cat /etc/resolv.conf”时,显示了以下内容:
名称服务器 xxx.xxx.xxx.1 域 mydomain.com
当我在我的电脑上运行“ping mydomain.com”时,显示了以下内容:
“正在 Ping mydomain.com [xxx.xxx.xxx.5],数据为 32 字节:”
答案1
看起来 mysql 和 apache 占用了大量的处理时间。数据库可能是一个瓶颈,我假设你确实需要它 - 你可以分析一下你的数据库使用情况并看看发生了什么吗?
答案2
平均负载为 18 显然表明存在问题,但问题是,为什么它这么高?
不久前我遇到过类似的问题,后来发现是磁盘控制器的问题。磁盘访问速度非常慢,导致系统在等待磁盘 IO 时出现瓶颈(表现为非常高的平均负载和等待时间,但也导致等待磁盘的进程消耗比平时更多的 CPU)。原来是内核无法正确识别控制器,因此只能使用老式的 IDE 控制器,而不是快速的 SATA 控制器。
修复方法是启动
hda=noprobe hda=none
在 /etc/grub.conf 中的内核字符串末尾。
如果问题不是磁盘 IO,那么你将不得不花一些时间排除故障。从目前的输出来看,你似乎有足够的 RAM,但 CPU 被 httpd 和 mysql 进程占用。你的服务器真的很忙吗?有多少连接进入服务器?(你可以使用获取此信息,netstat -an |grep ESTABLISHED
如果太多而无法计数,你可以netstat -an |grep ESTABLISHED |wc -l
计算行数。)你也可以使用类似工具iostat
来查看磁盘 IO 统计信息(来自 sysstat 包:yum install sysstat
安装它)。
答案3
我将使用 mysqltuner.pl 检查 mysql 性能,并检查 SMART 磁盘是否存在错误。
并尝试使用如下描述的 innodb 引擎配置这里。注意 innodb_buffer_pool_size 变量。它确实很神奇。
答案4
我与服务器管理员进行了交谈。他已将整个虚拟机 Centos 32 位替换为“Ubuntu Sever 10.10”,并安装了工作模式的 apache 和 fast-cgi php。
最终这就是解决方案。