我的 MySQL Ver 14.12 Distrib 5.0.45 服务器运行在 Multiflex Intel Blade 上,具有 8G RAM 和 8 x Intel(R) Xeon(R) CPU E5410 @ 2.33GHz。
我面临的问题是:
在过去的 3-4 天里,我的 2G 交换空间已满,服务器进入挂起状态,我每次都需要重新启动服务器。
输出
free -m
:total used free shared buffers cached Mem: 7971 933 7037 0 0 800 -/+ buffers/cache: 132 7838 Swap: 1983 785 1198
我已经添加了 2G 更多交换空间,但问题仍然存在。
/usr/local/mysql/bin/mysql -uroot -p -e "show variables like '%cache%';"
:+------------------------------+----------------------+ | Variable_name | Value | | binlog_cache_size | 32768 | | have_query_cache | YES | | key_cache_age_threshold | 300 | | key_cache_block_size | 1024 | | key_cache_division_limit | 100 | | max_binlog_cache_size | 18446744073709551615 | | ndb_cache_check_time | 0 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 536870912 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | table_cache | 1024 | | thread_cache_size | 16 |
有什么建议么?
答案1
这是一篇很棒的文章关于 Linux 内核如何处理交换空间。 “交换性”,或者说内核将大型程序交换到交换空间的可能性可以降低,这样交换空间就不会优于 RAM。
将 0-100 之间的值回显到 /proc/sys/vm/swappiness 将导致内核根据该值交换更少或更多。默认值为 60。我推荐 40-50 之类的值。
你可能实际上想要减少交换空间量,因为该瓶颈可能是您描述的“挂起”状态。