2012-04-03 3 views
5

나는 PHP로 데몬을 쓰고있다. 나는 대학에서 OS 수업을 듣지 않았다. 그래서, 내 데몬이 너무 많은 시스템 리소스를 소비하지 않고 더 많은 mysql 레코드가있을 때 확장 할 수 있는지 확인하기 위해보고자하는 서버/다른 통계는 무엇인가 궁금합니다. 기본적으로, 나의 데몬은 많은 수의 mysql 테이블 행을 처리하고있다.바위 위의 데몬

예를 들어, 데몬이 특정 행 수를 처리하는 데 걸린 시간과 사용중인 메모리의 양을 확인해야한다는 것을 알고 있습니다. 그러나 메모리 누수 여부는 어떻게 결정합니까? 또한, 다른 시스템 매개 변수로 데몬을 판단해야합니까?

+0

데몬이 디스크의 로그 파일에 항목을 기록하도록하면 필요한 것 중 일부를 얻을 수 있습니다. 예를 들어, 다른 100 개의 행을 처리 할 때마다 시간과 메시지를 작성할 수 있습니다. 로그 파일을 읽으면 데몬 관련 정보를 얻을 수 있습니다. 유닉스 명령 줄 도구를 사용하면 메모리, 프로세서 및 디스크 사용 통계를 볼 수 있습니다. – Jazz

+0

CPU 사용량/메모리 사용량/iowait가 주요 관심사입니다. – Corbin

+0

CPU에 과부하가 걸리면 PHP에서'usleep'을 사용하여 속도를 줄이십시오. 당신은 당신의 데몬을 &로 그냥 뒤지고 있습니까? – halfer

답변

2

그러나 메모리 누수 여부는 어떻게 결정합니까?

여기에 대해 묻는 내용은 운영 체제와 관련이 거의 없습니다. 메모리 사용에 대해 염려하는 것이 옳습니다. 이 질문에 대한 적절한 답변은 여기에있는 게시물의 범위를 넘어서는 것이지만, 메모리 관리를 위해 참조 계산이 어떻게 작동하는지 살펴보고 PHP 설치시 순환 참조 검사기가 구성되어 있는지 확인하십시오. 플롯은 실행 중일 때 mysql 클라이언트가 PHP를 차단하고 PHP의 메모리 제한을 무시할 때 두꺼워집니다. 너무 큰 결과 집합을 가져 오는 경우 mysql_query가 반환되고 코드가 넘어갈 때까지 알 수 없습니다. 항상 사용하십시오. 쿼리 (또는 PK 선택)에서 LIMIT을 사용하고 환경 설정에서 워치 독에서 데몬을 실행합니다. 프로덕션 환경에서 사용하려는 메모리 제한보다 낮은 메모리 제한을 사용하여 테스트하십시오.

PHP는 가비지 콜렉션을 통해 메모리가 부족하다고 생각할 때만 더 많은 메모리를 사용할 수 있습니다.

많은 양의 로그 파일을 작성하십시오!

0

데몬이 리눅스에서 어떻게 실행되는지에 따라 예상 한 것보다 많은 행 (100k + 또는 약 30 초 실행에 걸리는 것)을 처리해야합니다. 얼마나 빠른 메모리 사용량이 증가하는지 확인하십시오. 작은 작업이 너무 빨리 발생하면 실행중인 프로세스가 필요합니다.

그런 다음 사용을 마친 즉시 설정을 해제하고 ($ objectOrString) 데이터베이스에 대한 모든 파일과 연결을 닫아야합니다. 그러면 도움이됩니다.

다시 말하지만,이 파일이 무엇을 하느냐에 따라 PHP가 가비지 콜렉션을 실행할 수 있도록 cron 작업을 사용하여 agian을 시작하는 것이 좋습니다.