2014-07-21 1 views
6

로컬 및 기타 데이터베이스는 원격 서버 위치에 있습니다. 프레임 워크 - CakePHP의 MySQL의 : 5.1.71 - "원격 위치" PHP 버전 5.5.14httpd - CPU 사용률 100 % - mysql 서버 원격 위치

로컬 MySQL 데이터베이스를 사용하는 동안 TOP 명령을 사용하여 확인하면서 이제 CPU 사용률이 아파치 요청에 대한 정상입니다.

그러나 원격 서버 데이터베이스를 사용하는 동안. CPU 사용률은 같은 페이지를 방문 할 때 최대 70 % 또는 언젠가는 100 %가됩니다. 다음

는 몇 가지가 php.ini의 설정 및 httpd.conf에의 원인이 될 수있는 일 파일

php.ini의

memory_limit = 128M 
max_input_time = 60 
post_max_size = 8M 

을 httpd.conf

<IfModule prefork.c> 
StartServers  8 
MinSpareServers 5 
MaxSpareServers 20 
ServerLimit  256 
MaxClients  256 
MaxRequestsPerChild 4000 
</IfModule> 

<IfModule worker.c> 
StartServers   4 
MaxClients   300 
MinSpareThreads  25 
MaxSpareThreads  75 
ThreadsPerChild  25 
MaxRequestsPerChild 0 
</IfModule> 

KeepAlive Off 
MaxKeepAliveRequests 100 
KeepAliveTimeout 15 
있습니다 이 경우 httpd에 대한 높은 CPU 사용률.

도움이 될 것입니다.

감사 수 디르

답변

0

나는 다음과 같이 불렀고있어이 개 MySQL의 서버를하는 데 사용됩니다. 몇 가지 스크립트를 작성했습니다. 하나는 연결 동작이 어떻게 보이는지 (concurrrent 세션 연결은 서버에서) 알려주고이를 기록합니다. 다음은 서비스 사용량을 확인하고 임계 값이 70 %에 도달하면 연결을 끊고 거래를보기 위해 이메일을 보냅니다.

정상적인 사용 시간 동안 사이트를 탐색하는 사람들이 내 서버를 멍청하게 보았을 것으로 예상되는 것으로 나타났습니다.

살인 세션 옆의 이것을 완화하기 위해 수행 한 작업 (멋진 것은 아닙니다). 과도한 사용을보고 있던 리팩터링 테이블 데이터베이스를 정상화하는 것입니다. 그러면 수리하고 다시 색인 할 것입니다.

나는 또한 어떤 것들은 설정을 넘어선 것을 깨달았다. 우리는 중복을 만듭니다.

MySQL 서버를 미러링하고 요청 매개 변수를 기반으로 사용자를 라우트해야했습니다.

결국로드 밸런싱이 더 필요하다는 것을 깨달았으며 4 MySQL 서버와로드 밸런서로 트래픽을 완화하고 안내했습니다.

쿼리 수준에서 접근 할 수있는 방법을 확인한 다음 DB/테이블 리팩터링 및 다시 색인화를 수행하십시오.

다음으로 동시 접속 살인 스크립트를 작성하고 비활성화 된 사용자를 대상으로 지정하거나 어딘가에 리디렉션하거나 사이트에서 거물급 체를 위해 길을 만드십시오.

나는 시간이 지남에 많은 일을했지만 그게 모두 그 날에 다시 시작된 방법입니다.

호프가 도움이되었거나 최소한 어프로치에 대해 생각해 보시기 바랍니다.