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의 메모리가 필요합니다. 이는 나에게 매우 안 좋았기 때문에 제거 하고 설치했습니다 . 당신은 그것을 할.vps
apache
VPS
apache
lighthttpd