在php应用程序中,MySQL有时会变慢。当我重新启动mysql服务时,它就可以正常工作了。
下面是我在my.cnf文件中所做的一些关键配置:
skip-external-locking
skip-name-resolve我还启用并检查了slow query logs。里面什么也没有,因为这是间歇性的问题。
所有用户都与服务器IP地址相关联。
MySQL Tunner建议:
-上升时间:19h23m22s (5K q 0.072 qps,1K conn,TX: 2M,RX: 606 K)
-读写: 99% / 1%
-禁用二进制日志记录
-总缓冲区: 1.1G全局+ 2.7M /线程(5000个最大线程)
最大内存使用量: 1.1G (占已安装RAM的32.15%)
!!最大可能内存使用量: 14.2G (已安装内存的422.17%)
确定慢速查询: 0% (0/5K)
可用连接的最高使用率: 0% (4/5000)
!!中断连接: 4.72% (89/1886)
!!查询缓存被禁用。
需要临时表的OK排序: 0% (0 temp排序/ 92排序)
!!在磁盘上创建的临时表: 70% (磁盘上608个/ 868个总表)
线程缓存命中率: 99% (创建4个/ 1K连接)
表缓存命中率: 95% (166个打开/173个打开)
确定打开文件限制: 0% (76/25K)
立即获得表锁: 100% (2K立即/ 2K锁)
如果你需要更多的信息来解决这个问题,请告诉我。
发布于 2015-12-01 17:57:18
先检查Mysql日志
也许你在75%的系统等待,很可能是因为大量的交换。
EXPLAIN扩展命令在您不知道发生了什么时显示有关查询的详细信息,http://dev.mysql.com/doc/refman/5.0/en/explain-extended.html
利用查询缓存http://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html
确保您的MySQL服务器配置文件选项根据硬件http://dev.mysql.com/doc/refman/5.5/en/option-files.html进行优化。
确保在创建表结构时使用优化的数据类型--例如,“注释”字段的大小为256个字符,使用VARCHAR( 256 )类型的字段将其回复到MYSQL,而不是使用文本。查询将更快。
发布于 2015-12-01 18:02:45
这是:
[--] Total buffers: 1.1G global + 2.7M per thread (5000 max threads)与此有关:
[!!] Maximum possible memory usage: 14.2G (422.17% of installed RAM)这很糟糕,因为一旦您开始使用比系统中可用的RAM更多的内存,您就开始切换到磁盘上,性能将急剧下降。
这是没有好的理由的,从来没有:
[!!] Query cache is disabled检查您的内存使用情况可能有助于解决以下问题:
[!!] Temporary tables created on disk: 70% (608 on disk / 868 total)发布于 2015-12-01 19:17:07
在使用INNODB时,DBMS的总体性能取决于许多配置(在my.ini中),而优化它们是一项实验性工作,它取决于各种各样的因素,从物理功能到表索引,再到连接查询,甚至排序查询。
一般来说,我想最重要的INNODB配置属性是innodb_buffer_pool_size。
InnoDB与MyISAM不同,它使用缓冲池缓存索引和行数据。设置的越大,访问表中的数据所需的磁盘I/O就越少。在专用数据库服务器上,可以将此参数设置为机器物理内存大小的80%。但是,不要将其设置得太大,因为物理内存的竞争可能会导致操作系统中的分页。
如果您的数据库最近增长了,并且innodb_buffer_pool_size很小,那么它将是第一个疑点。当然,更改此属性(通常使用一些其他参数,如innodb_log_file_size)是一件很痛苦的事情,因为您必须转储和恢复所有数据。
如果它不起作用,那么您应该考虑其他可能性,这不是一件简单的事情。
https://stackoverflow.com/questions/34026781
复制相似问题