优化MySQL设置-mysqld内存不足


15

我对于更改my.conf文件中的哪些设置来优化服务器感到有些困惑(由于流量大,mysql服务器不断崩溃)。

这是my.cnf文件:

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer              = 16M
max_allowed_packet      = 16M
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

服务器规格为:

CPU Cores   2 cores
RAM (Memory)    1GB
SSD (Disk Space)    20GB

运行Ubuntu 12.04 LTS

这是我的分区:

NAME   FSTYPE   SIZE MOUNTPOINT LABEL
vda              20G            
├─vda1 ext4     476M /boot      
├─vda2 swap     477M [SWAP]     
└─vda3 ext4    19.1G / 

任何帮助将非常感激。

查看错误日志,可以看到mysqld内存不足:

Feb 17 11:02:06 111488 kernel: [8276839.559141] Out of memory: Kill process 20719 (mysqld) score 75 or sacrifice child
Feb 17 11:02:06 111488 kernel: [8276839.559209] Killed process 20719 (mysqld) total-vm:1347424kB, anon-rss:30524kB, file-rss:0kB

Answers:


10

来自serverguide Wiki的一般答案

MySQL调谐器 安装mysqltuner

MySQL Tuner是一个有用的工具,它将连接到正在运行的MySQL实例,并提供有关如何针对您的工作负载对其进行最佳配置的建议。服务器运行的时间越长,mysqltuner可以提供的建议就越好。在生产环境中,请考虑至少等待24小时后再运行工具。您可以从Ubuntu存储库中获取安装mysqltuner:

sudo apt-get install mysqltuner

然后,一旦安装,运行它:

 mysqltuner

并等待其最终报告。顶部提供了有关数据库服务器的常规信息,而底部则提供了在my.cnf中进行更改的调整建议。其中大多数都可以在服务器上实时更改,而无需重新启动,请查阅MySQL官方文档(参考资料部分中的链接),以查看生产中要更改的相关变量。以下是生产数据库的示例报告的一部分,该报告显示了增加查询缓存的数量可能会带来一些好处:

--------建议----------------------------------------- ------------
一般建议:
    运行OPTIMIZE TABLE来对表进行碎片整理以获得更好的性能
    逐渐增加table_cache以避免文件描述符限制
要调整的变量:
    key_buffer_size(> 1.4G)
    query_cache_size(> 32M)
    table_cache(> 64)
    innodb_buffer_pool_size(> = 22G)

关于调优数据库的最后一条评论:虽然我们可以广泛地说某些设置是最佳的,但是性能因应用程序而异。例如,最适合Wordpress的功能可能不适用于Drupal,Joomla或专有应用程序。性能取决于查询的类型,索引的使用,数据库设计的效率等等。您可能会发现,花一些时间根据要使用的应用程序来搜索数据库调优技巧很有用。一旦超过某个点,所做的任何调整只会带来较小的改进,并且最好还是改进应用程序,或者通过使用功能更强大的硬件或添加从属服务器来扩展数据库环境。


  • 观看mysqltuner报告的性能指标部分。将最大可能的内存保持在50%以下。
  • tmp_table_sizemax_heap_table_size variable:保持这些相等和较高。
  • join_buffer_size,少量增加;它将乘以max_connections
  • innodb_buffer_pool_size。提高它。


0

泊坞窗组成的解析度

mysql:
    volumes:
        - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

配置内容./config/mysql/my.cnf

[mysqld]
performance_schema = off
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.