스와핑에 편향된 메모리 관리

스와핑에 편향된 메모리 관리

768MB RAM이 있습니다. 일반적으로 MySQL은 100-180MB의 RAM을 사용하고 MySQL은 80-120MB를 스왑합니다. 50-60MB의 여유 RAM이 있습니다.

그래서 업그레이드해야겠다고 생각했어요. 그런 다음 RAM을 1GB로 업그레이드했습니다. 그 후에는 200-350MB의 여유 RAM이 있습니다. 그러나 MySQL은 동일한 양의 RAM을 사용하지만 여전히 40-60MB를 교환합니다.

이것이 내 free -m결과입니다.

             total       used       free     shared    buffers     cached
Mem:           996        796        200          0         73         97
-/+ buffers/cache:        625        371
Swap:         2047         92       1955

이것이 내 최고 결과입니다

top - 22:11:23 up 13:35,  1 user,  load average: 0.26, 0.33, 0.35
Tasks: 143 total,   1 running, 142 sleeping,   0 stopped,   0 zombie
Cpu(s): 20.2%us,  1.8%sy,  0.0%ni, 77.8%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1020564k total,   809836k used,   210728k free,    77808k buffers
Swap:  2097144k total,    94880k used,  2002264k free,   102596k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
 2484 mysql     20   0 1845m 165m 4356 S 25.9 16.6 151:33.45  63m mysqld
13777 myuser  20   0  201m  22m 9836 S  0.0  2.3   0:00.42    0 php-cgi
13780 myuser  20   0  200m  21m 9820 S  3.3  2.2   0:00.47    0 php-cgi
13773 myuser  20   0  200m  21m 9820 S  0.0  2.2   0:00.70    0 php-cgi
13775 myuser  20   0  200m  21m 9812 S  5.3  2.2   0:00.42    0 php-cgi
13779 myuser  20   0  200m  21m 9812 S  3.0  2.2   0:00.31    0 php-cgi
13778 myuser  20   0  200m  21m 9812 S  3.6  2.2   0:00.31    0 php-cgi
13776 myuser  20   0  200m  21m 9812 S  3.0  2.2   0:00.31    0 php-cgi
13774 myuser  20   0  199m  20m 9812 S  0.0  2.1   0:00.23    0 php-cgi
 2619 named     20   0  233m 9.8m 1388 S  0.0  1.0   0:04.57 5288 named
 2689 root      20   0  328m 7528 6316 S  0.0  0.7   0:05.14 9648 httpd
13735 root      20   0  106m 4840 3756 S  0.0  0.5   0:00.26    0 sshd
12772 apache    20   0  328m 3932 2040 S  0.0  0.4   0:01.08 9392 httpd
13163 apache    20   0  328m 3916 2036 S  0.0  0.4   0:00.65 9400 httpd
13425 apache    20   0  328m 3912 2036 S  0.0  0.4   0:00.32 9404 httpd
13417 apache    20   0  328m 3908 2036 S  0.0  0.4   0:00.35 9412 httpd
13420 apache    20   0  328m 3908 2036 S  0.0  0.4   0:00.37 9412 httpd

371MB의 여유 RAM이 있어도 CentOS 6.3 시스템은 여전히 ​​교체됩니다. 스왑 크기는 이제 90MB입니다.

내 질문은 여유 RAM이 많음에도 불구하고 Linux가 왜 여전히 스왑을 하는가입니다. 나쁘면 어떻게 더 진단하나요? 아니면 나는 그것에 대해 신경 쓰지 말아야합니까?

답변1

귀하의 mysqld는 1,8GB RAM을 사용하도록 구성되어 있습니다. /etc/my.cnf이는 아마도 실제로 사용 가능한 것보다 훨씬 더 많은 용량이기 때문일 것입니다.

이제 어느 시점에서(아마도 이에 sysstat대해 설치하고 문의했을 것입니다 sar) 사용 가능한 것보다 더 많은 RAM을 사용하는 메모리 요청(PHP도 가능)을 받는 것처럼 보입니다. 그래서 시스템이 스와핑을 시작합니다.

결국 메모리는 더 이상 사용되지 않지만 액세스할 수 있는 방법은 없습니다. 따라서 시스템은 해당 스왑 공간을 다시 RAM에 넣을 이유가 없습니다.

Linux "교체성"을 조정하여 이 동작을 변경할 수 있습니다.

"Ask Ubuntu"에 좋은 질문/답변이 있습니다.여기.

답변2

apache당신이 도망치는 걸 봤고 작년에 문제가 생겼어요 1G ram. 약 300-400K의 메모리가 필요합니다. 이는 나에게 매우 안 좋았기 때문에 제거 하고 설치했습니다 . 당신은 그것을 할.vpsapacheVPSapachelighthttpd

관련 정보