Mysql/交换空间已满

Mysql/交换空间已满

我的 MySQL Ver 14.12 Distrib 5.0.45 服务器运行在 Multiflex Intel Blade 上,具有 8G RAM 和 8 x Intel(R) Xeon(R) CPU E5410 @ 2.33GHz。

我面临的问题是:

  1. 在过去的 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
    
  2. 我已经添加了 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 之类的值。

你可能实际上想要减少交换空间量,因为该瓶颈可能是您描述的“挂起”状态。

相关内容