我有专门的服务器,像16 GB RAM等非常好的configuration,但我面临着沉重的负载从MySQL我正在运行音乐wesbite只有一个数据库正在运行和5-10页只运行。当我点击whm显示processlist它只显示2-3个进程
然而,whm负载总是小于一个,但是当我点击whm加载它显示了20%的cpu使用情况的MySQL和一段时间后开始说不能连接到MySQL。 MySQL服务器已经消失
1691 (Trace) (Kill) mysql 0 19.2 2.7 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log- error=/var/lib/mysql/server.xyz.com.err --pid-file=/var/lib/mysql/server.xyz.com.pid
我已经testing了静态页面,他们正在快速stream逝,但所有正在使用MySQL的dynamic页面将变得非常缓慢,需要几年时间才能打开。
my.conf文件是
[mysqld] key_buffer = 1536M max_allowed_packet = 1M max_connections = 250 max_user_connections = 15 wait_timeout=40 connect_timeout=10 table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M server-id = 14 old-passwords = 1 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout
我已经检查日志错误文件它说什么都没有。我已经增加了最大连接也到1000年,但仍然是同样的问题是如果我断开一个数据库是通过更改数据库的名称,我可以看到半小时的服务器和MySQL的负载下降可以忽略。我已经testing了一切,如果有一些查询,可以导致沉重的负载到服务器可以请列出哪种types的查询可以导致服务器上的负载,然后也为5-10页,它永远不会造成那么多的重负载。 我看到有500个网站的服务器,但工作得很好。
你的数据库有多大? 你正在使用哪种存储引擎? 它们主要是两个:myIsam(默认的)和InnoDB。 myIsam不能很好地处理并发写入,并且在插入/更新行时可能会发生延迟。
如果你使用myIsam,你也可以尝试myisamchk,这里描述: http ://dev.mysql.com/doc/refman/5.5/en/myisamchk.html
在运行OPTIMIZE语句之前,您可能需要使用-d选项来收集有关表的信息。
数据库文件也可能托pipe在联网的path上,或在虚假驱动器上。 它后面的情况,检查您的系统日志驱动器错误。
在这种情况下,如果它们是对数据库的两个并发访问(select和更新),则可能会出现死锁。
在这种情况下,我强烈build议使用innoDB引擎。 你将不得不build立一个innoDB文件存储(在my.cnf中,请参阅“innodb_data_file_path”),然后转换你的表
ALTER TABLE 'YOURTABLENAME' ENGINE=InnoDB;
注意innoDB比MyIsam使用更多的空间。 1GB的表可能会吃2GB的InnoDB数据空间。
InnoDB在读取请求上速度较慢,但它处理并发更新/select无瑕疵。
编辑:如果你的innodb中已经有一个“innodb_data_file_path”行,改变它可能会破坏你的innoDB数据空间。 如果没有表使用该存储,则可以从头开始创build新文件,否则,您可能不需要更新此行,并依赖自动扩展,或者可以添加如下文件:
innodb_data_file_path=ibdata1:10M;ibdata2:2000M:autoextend
这将添加一个2GB的初始文件大小的文件,可能会增加)