今天发现服务器基本上动不了,很慢,一看CPU占用100%,以前CPU都被Apache占用,搞了几天下去了,今天却是被
MySQL 占用的。在网上找了半天也没有找到恰当的解决办法!用mysqladmin processlist status (注意,有密码需要用:mysqladmin -u root -p processlist status) 看有很多的链接是从我自己编的程序里所用的数据库导至,而我的PHP程序使用了mysql_pconnect 。不管三七二十一,把它改成mysql_connect。就是把不用永久链接,这对程序并没有多大影响,但发现Mysql却好多了。
虽然有些改进了,但时不时的mysql 还是会占用很高的CPU.
找了半天资料.又把my.ini里的一个参数改了:tmp_table_size=200M 原来为77M. 也不知为什么会出现大于77M的表导至特别慢?
还有就是使用Drupal程序时的accesslog表特别大,并且使用过程中会有对该表进行操作的sql 语句如:SELECT COUNT(path) AS hits, path, title, AVG(timer) AS average_time … 这条语句导至mysql拷贝数据到硬盘从页速度降低!因此,如果不需要统计模块可以将此模块关闭.或者将访问记录低于3小时的全部丢弃就可以了. 再运行一下cron.php 或者干脆清空accesslog表.
经过这样的处理,CPU占用问题就基本解决了。速度也快了。