我现在遇到mysql重载问题,然后当它非常繁忙时,服务器将完全停止响应。我知道我的一个数据库有一个trafic的战利品,但我怎么能处理this.do我需要一个更好的服务器或我需要一个不同的数据库工程。目前我正在使用MyISAM。我正在处理的一些表有大约420000条记录(82.7 MiB)有很多插入和选择,速度非常重要任何帮助都会很多
当我查看whm
上的状态时,我收到此消息/usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/server.sy2.com.pid --skip-external-locking
大部分时间服务器负载为180%-220%。
我在服务器上输入了这个
netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
1 established)
1 Foreign
17 SYN_RECV
28 FIN_WAIT1
30 LISTEN
154 ESTABLISHED
188 FIN_WAIT2
1206 TIME_WAIT
Apache状态
Current Time: Saturday, 25-Jun-2011 19:00:34 BST
Restart Time: Friday, 24-Jun-2011 20:41:36 BST
Parent Server Generation: 11
Server uptime: 22 hours 18 minutes 58 seconds
Total accesses: 1866618 - Total Traffic: 12.2 GB
CPU Usage: u25.92 s20.03 cu1142.19 cs0 - 1.48% CPU load
23.2 requests/sec - 159.5 kB/second - 6.9 kB/request
206 requests currently being processed, 12 idle workers
this is the server spec
Linux - Dual Quad Core Intel Xeon E5620
Hard Disk: 4x300GB SAS 15k RPM
RAM: 12 GB DDR3 RAM
RAID Options: RAID 10 (needs 4 identical Drives)
Operating System: CentOS 5.x
Control Panel: cPanel/WHM
Bandwidth: 5000 GB
答案 0 :(得分:2)
这个问题没有简单的答案。关于如何解决问题的一些指导原则。您可能实际上遇到了服务器可以处理的峰值负载,并且可能无法进行太多优化。
从show processlist
开始这将告诉您有多少连接是打开的,哪些连接可能因锁定问题而被卡住。
启用慢查询日志,查找缓慢响应的查询并使用explain
查看执行计划。您可能缺少索引或存在导致查询运行缓慢的结构性问题。
您可以调整数据库服务器设置,以允许更多数据缓存在内存中。有一些工具,如mysqltuner,可以指导您应该查看的设置。
您可能还想查看本指南:http://www.fromdual.com/mysql-performance-tuning-key