최근에 서버 CPU가 매우 높아졌습니다.
CPU로드는 평균 13.91 (1 분) 11.72 (5 분) 8.01 (15 분)이며 내 사이트의 트래픽은 약간만 증가했습니다.
top 명령을 실행 한 후 MySQL이 160 % CPU를 사용하고 있음을 알았습니다!
최근에 테이블을 최적화하고 영구 연결로 전환했습니다. 이것이 MySQL이 많은 양의 CPU를 사용하게 만들 수 있습니까?
최근에 서버 CPU가 매우 높아졌습니다.
CPU로드는 평균 13.91 (1 분) 11.72 (5 분) 8.01 (15 분)이며 내 사이트의 트래픽은 약간만 증가했습니다.
top 명령을 실행 한 후 MySQL이 160 % CPU를 사용하고 있음을 알았습니다!
최근에 테이블을 최적화하고 영구 연결로 전환했습니다. 이것이 MySQL이 많은 양의 CPU를 사용하게 만들 수 있습니까?
답변:
먼저 영구 연결은 거의 항상 좋은 것보다 더 많은 해를 끼치므로 영구 연결을 해제하고 싶을 것입니다.
둘째, 누군가 원격 서버에서 연결할 수 없도록 MySQL 사용자를 다시 확인하고 싶다고 말하고 싶습니다. 이것은 또한 확인해야 할 주요 보안 사항입니다.
셋째 , 오랜 시간이 걸리는 쿼리를 주시하기 위해 MySQL 느린 쿼리 로그를 켜고 키 테이블을 너무 오래 잠그는 쿼리가 없도록하는 데 사용하고 싶습니다.
확인할 수있는 다른 사항은 CPU로드가 높을 때 다음 쿼리를 실행하는 것입니다.
SHOW PROCESSLIST;
현재 실행 중이거나 큐에서 실행중인 쿼리, 쿼리가 수행하는 작업 및 수행중인 작업이 표시됩니다 (이 명령은 쿼리가 너무 길면 잘립니다. SHOW FULL PROCESSLIST를 사용하여 전체 쿼리 텍스트를 볼 수 있음) .
버퍼 크기, 테이블 캐시 , 쿼리 캐시 및 innodb_buffer_pool_size (innodb 테이블을 사용하는 경우) 와 같은 것들을 주시하고 싶을 것 입니다. 이러한 모든 메모리 할당은 쿼리 성능에 영향을 미치므로 MySQL이 CPU를 먹습니다.
또한 다음과 같은 정보가 포함되어 있으므로 다음 내용을 읽어보십시오.
프로파일 러를 사용하는 것도 좋습니다. 당신이 원할 때 당신이 켤 수있는 것은 당신의 어플리케이션이 어떤 쿼리를 실행하는지, 중복 된 쿼리가 있거나, 얼마나 오래 걸리는지 등을 보여줄 것입니다. 이와 같은 예는 제가 작업 한 것입니다 PHP 프로파일 러 이지만 많은 것들이 있습니다. Drupal, Joomla 또는 Wordpress와 같은 소프트웨어를 사용하는 경우 수동으로 아무것도 통합하지 않고도이 정보를 얻을 수있는 모듈이 있으므로 커뮤니티 내에서 묻고 싶을 것입니다.
MySQL이 높은 CPU 사용량 또는 부하를 위해 Google을 사용하는 경우 이것이 최고의 게시물이므로 추가 답변을 추가하겠습니다.
2012 년 7 월 1 일, 현재 UTC 시간에 윤초가 추가되어 조수로 인한 지구의 느린 회전을 보상합니다. ntp (또는 ntpd)를 실행할 때이 초는 컴퓨터 / 서버 시계에 추가되었습니다. MySQLd는 일부 OS에서이 추가 초를 좋아하지 않는 것으로 보이며 높은 CPU로드를 생성합니다. 빠른 수정은 다음과 같습니다 (루트).
$ /etc/init.d/ntpd stop
$ date -s "`date`"
$ /etc/init.d/ntpd start
date
"&& service ntp start MySQL CPU 사용량이 즉시 50-100 %
sudo service ntpd stop
이 구성에 사용하십시오 .
이 서버가 외부 세계에 보이는 경우 외부 세계와의 연결 요청이 많은지 (즉, 침입하려는 사람들) 확인해야합니다.