MySQL/스왑 공간이 가득 참

MySQL/스왑 공간이 가득 참

내 MySQL 버전 14.12 Distrib 5.0.45 서버는 8G RAM 및 8 x Intel(R) Xeon(R) CPU E5410 @ 2.33GHz를 갖춘 Multiflex Intel Blade에서 실행됩니다.

내가 직면하고 있는 문제는 다음과 같습니다.

  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 정도 추천드려요.

당신은 실제로 원할 수도 있습니다줄이다병목 현상이 설명하는 "중지" 상태일 수 있으므로 스왑 공간의 양입니다.

관련 정보