더 적은 처리 전력을 사용하기 위해 명령 줄 프로세스를 얻는 방법

StackOverflow https://stackoverflow.com/questions/257659

  •  06-07-2019
  •  | 
  •  

문제

더 적은 처리 전력을 사용하기 위해 명령 줄에서 프로세스를 실행하는 방법이 궁금합니다. 내가 가진 문제는 프로세스가 기본적으로 CPU를 인수하고 MySQL과 나머지 서버를 가져 오는 것입니다. 모든 것이 매우 느려지고 있습니다.

나는 사용했다 nice 전에는 운이 좋지 않았습니다. 답이라면 어떻게 사용 하시겠습니까?

나는 또한 들어갈 생각을했다 sleep 명령이지만 여전히 UP 메모리를 사용하여 최상의 옵션이 아닙니다.

다른 해결책이 있습니까?

이유 내에서 얼마나 오래 달리는지는 중요하지 않습니다.

차이가있는 경우 스크립트는 PHP 스크립트이지만 이미 실행하는 데 30 분 이상이 걸리므로 명령 줄에서 실행합니다.

편집 : 프로세스는 마이그레이션 스크립트이므로 테스트 목적으로 만 실행해야하므로 한 번만 실행해야하므로 최적화하는 데 너무 많은 시간을 소비하고 싶지 않습니다. 테스트를 위해서만 서버를 거의 중단으로 유지하고 공유 서버입니다.

도움이 되었습니까?

해결책

CPU를 기다리는 다른 프로세스가있는 경우 19 "Niceness"와 함께 Nice를 사용해야합니다.

 nice -n 19 <command>

프로그램에 대기중인 대기 시간이 없는지 확인하고 I/O 대기 시간을 확인하십시오.

다른 팁

프로그램을 수정하지 않고 실제로 할 수있는 최선은 좋은 값을 사용하여 최대 값으로 변경하는 것입니다. nice 또는 renice. 가장 좋은 방법은 아마도 프로그램을 프로필하여 대부분의 시간을 소비하는 위치를 찾아/대부분의 메모리를 사용하고 원하는 것에 대한보다 효율적인 알고리즘을 찾는 것입니다. 예를 들어, MySQL의 대규모 결과 세트에서 작동하는 경우 전체 결과 세트를 메모리에로드하는 대신 한 번에 하나씩 레코드를 처리하거나 쿼리 또는 결과에서 수행되는 처리를 최적화 할 수 있습니다.

실제로 CPU를 취하는 프로세스는 무엇입니까? PHP 또는 MySQL? MySQL이라면 'Nice'는 전혀 도움이되지 않습니다 (서버가 'Nice'Up이 아니기 때문에).

일반적으로 MySQL이라면 쿼리가 서버를 슬램하는 이유에 대해 쿼리와 MySQL 튜닝을 살펴 봐야합니다.

MySQL 서버 프로세스를 슬래 밍하면 MySQL을 통한 시스템의 기본보기 인 경우 "전체 시스템이 느려질 수 있습니다"로 표시 될 수 있습니다.

CMD 라인 프로세스가 IO 집약적인지 여부도 고려해야합니다. 'Ionice'명령을 사용하여 일부 Linux 배포판에서 조정할 수 있지만 사용법은 CPU 'Nice'명령만큼 단순하지 않습니다.

기본 사용 :

이오니스 -N7 CMD

최우선 순위에서 '최선의 노력'스케줄러를 사용하여 'CMD'를 실행합니다. 더 많은 사용에 대한 자세한 내용은 Man Page를 참조하십시오.

CPU주기를 사용하면 시스템의 나머지 부분을 인수해서는 안됩니다. 당신은 다음을 통해 이것을 보여줄 수 있습니다.

while true; do done

이것은 무한 루프이며 얻을 수있는 CPU 사이클의 많은 부분을 사용할 것입니다 ( ^c로 중지). 당신이 사용할 수있는 top 그것이 일을하고 있는지 확인합니다. 이것이 MySQL이 죽는 지점까지 시스템의 전반적인 성능에 크게 영향을 미치지 않을 것이라고 확신합니다.

그러나 PHP 스크립트가 많은 메모리를 할당한다면 ~할 수 있다 차이를 만들다. Linux는 시스템이 메모리가 떨어지기 시작하면 살해 프로세스를 돌아 다니는 경향이 있습니다.

해결책을 찾기 전에 문제를 좁히고 원인을 확인해야합니다.

NFS를 통해 다른 컴퓨터에 서버의 흥미로운 디렉토리/파일 시스템/uthern을 장착하고 스크립트를 실행할 수 있습니다 (이는 문제를 피하고 실제로 실용적이지 않다는 것을 의미합니다. |).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top