이 최상위 명령을 해석하는 방법

이 최상위 명령을 해석하는 방법
top - 04:36:16 up 32 days,  2:33,  1 user,  load average: 251.72, 250.54, 231.19
Tasks: 785 total, 249 running, 522 sleeping,   2 stopped,  12 zombie
Cpu(s):  8.9%us, 90.5%sy,  0.4%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  16313868k total,  7021336k used,  9292532k free,   432196k buffers
Swap:  4194296k total,   295012k used,  3899284k free,   514320k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18873 nudenude  20   0 97.8m  26m 4944 R  4.0  0.2   0:09.35 php
18140 nudenude  20   0 93984  22m 4940 R  3.7  0.1   0:11.04 php
18178 nudenude  20   0 99.6m  26m 4912 R  3.7  0.2   0:11.11 php
18537 nudenude  20   0  100m  26m 4936 R  3.7  0.2   0:10.31 php
18726 nudenude  20   0 98.3m  25m 4868 R  3.7  0.2   0:09.82 php
18977 nudenude  20   0  101m  25m 4952 R  3.7  0.2   0:09.14 php
19049 nudenude  20   0 99.5m  28m 4920 R  3.7  0.2   0:08.87 php
19852 nudenude  20   0  100m  30m 4912 R  3.7  0.2   0:07.08 php
20504 nudenude  20   0 93024  18m 4880 R  3.7  0.1   0:04.86 php
20562 nudenude  20   0  100m  31m 4940 R  3.7  0.2   0:04.73 php
20681 nudenude  20   0 90912  14m 4940 R  3.7  0.1   0:04.40 php
20685 nudenude  20   0 90656  15m 4928 R  3.7  0.1   0:04.38 php

뭔가 이상해요.

시스템이 %sy에 대해 많은 CPU를 사용하는 이유는 무엇입니까?

아직 충분한 메모리가 있음에도 불구하고 해당 작업에서 가상 메모리를 많이 사용하고 있는 것 같습니다. 그래서 왜 그런지 알고 싶어요?

또한 해상도와 VIRT에서 15m와 14m는 무엇을 의미합니까? man top에는 아무것도 표시되지 않습니다.

나는 확인했다http://unixhelp.ed.ac.uk/CGI/man-cgi?top아무것도 표시되지 않습니다.

참고: 로드는 한때 50%였습니다. 또한 VIRT 열은 일반적으로 0입니다. 그러나 때때로 코어에서 CPU의 90%를 사용하는 정지 모드로 전환되는 경우도 있습니다. 커널이 정확히 무엇을 하는지는 모릅니다.

사용자는 CPU를 거의 사용하지 않습니다. 부하가 너무 높은 것은 당연합니다. 근데 뭐? 커널이 하는 일>

답변1

내가 작성한 매뉴얼 페이지에서 이것을 복사했습니다.플로그, 왜냐하면 나는 거기에서 그것을 분명히 하려고 노력하고 있기 때문입니다:

위의 통계 중 일부를 해석할 때 가상 주소 공간과 실제 메모리의 차이점을 이해하는 것이 중요합니다. 이름에서 알 수 있듯이 가상 주소 공간은 실제가 아닙니다. 이는 기본적으로 현재 프로세스에 할당된 모든 메모리의 맵입니다. 이 맵의 크기 제한은 모든 프로세스(일반적으로 2~4GB)에 대해 동일하며 누적되지 않습니다. 즉, 수십 또는 수백 개의 프로세스가 있을 수 있으며 각 프로세스에는 자체 2~4GB의 가상 주소 공간이 있습니다. 실제 물리적 메모리는 512MB에 불과합니다).

데이터는 실제로 가상 주소 공간에서 저장되거나 검색될 수 없습니다. 실제 데이터에는 실제 물리적 메모리가 필요합니다. 서로의 관계를 관리하는 것이 커널의 임무입니다. 가상 공간 통계(VirtualSz, Data+Stack 및 Priv&Write)는 프로세스 구조 및 물리적 메모리 사용량과의 관계를 고려하는 데 유용하지만 물리적 메모리 통계(ResidentSz, Share 및 Ratio)는 프로세스의 구조를 고려할 때 가장 유용합니다. 실제 사용된 RAM 양이 중요합니다.

Top에는 이러한 메트릭이 모두 정확하게 포함되어 있지는 않지만 VIRT 점수는 가상 주소 공간이고 SHR과 같은 RES는 물리적 메모리를 나타냅니다. 상대적인 메모리 사용량(즉, 한 프로세스를 다른 프로세스와 비교)에 관심이 있다면 RES 점수가 더 관련성이 높습니다.

VIRT의 일부 부분은 총 볼륨을 기반으로 하는 openVZ 제한 컨테이너와 같은 다른 프로세스에 연결됩니다.개인 쓰기 가능 주소 공간, RSS 대신. Top은 이를 보고하지 않지만 pmap과 plog는 이를 보고합니다("Priv&Write"에 대한 plog 맨페이지를 참조하십시오. 이는 실제로 이를 작성할 때 동기 부여의 일부였습니다).

답변2

최고 출력에 따르면 PHP 스크립트에 문제가 있는 것 같습니다. 확인할 수 있습니다.

  • PHP 스크립트가 제대로 작동하는지 확인하세요.
  • 아파치 오류 로그를 확인해보세요
  • 때때로 cron 항목을 확인하십시오. 많은 PHP 스크립트가 cron을 통해 실행됩니다.
  • 또한 좀비 프로세스의 원인을 찾아보십시오.
  • Apache와 PHP 튜닝

나는 PHP의 높은 부하로 인해 다음을 실행하여 PHP 프로세스를 간단히 종료할 수 있다고 확신합니다.

killall -9 php아니면 pkill -9 php맨 위에서 지켜보세요.

관련 정보