2011-10-04 3 views
2

로컬 서버와 원격 프로덕션 서버라는 두 개의 서버가 있습니다. 그들은 기본적으로 동일한 설정을 가지고 있습니다 : 우분투 10.10, 아파치 2, PHP 5.3, PHP-APC, MYSQL 등등. 나는 또한 두 서버에서 webapp의 복사본을 가지고 있으며 여기 PHP의 문제가 있습니다 :프로덕션 서버에서 PHP 메모리가 급증합니다

내 로컬 서버 webapp는 ~ 4MB의 메모리 만 사용하지만, 프로덕션 서버에서는 메모리 사용이 최대 50MB의 메모리를 소모합니다. memory_get_peak_usage() 함수를 실행하여 webapp 실행의 다른 단계에서 메모리 사용량을 얻으려고 노력했으며, 프로덕션 서버 메모리에서 class_exists()와 같은 함수 호출에서 0.7에서 최대 49MB까지이를 발견했습니다.

무엇이 문제 일 수 있습니까?

탱크.

+0

이것이 메모리 소비를 야기하는 함수 호출이라는 것이 확실합니까? 같은 줄을 하나의 PHP 파일에 넣고 확인해보십시오. – soulmerge

+0

지금은 실행되고 있기 때문에 그럴 수는 없지만 최대한 빨리 시도하겠습니다. 그 함수로 라인을 주석 처리하려고 시도했는데 메모리 사용량이 정상적으로 감소했습니다. 전반적으로 같은 레벨에 머물 렀습니다. 그 또는 유사한 기능이 사용 된 다른 장소가 있기 때문입니다. –

+0

좋아, 나는 그것의 자신에 class_exists()를 달리는 것을 시도하고 웹 애플리케이션에서 것과 같이 다량 기억을 가지고 가지 않는다. 왜 ... 잘 모르겠어요. –

답변

0

좋아, 찾은. 나중에 사용자의 브라우저에 정보를 포함하는 캐시 파일을 만드는 클래스가 있습니다 (나중에이를 인식하기 위해). 분명히 그 파일 및/또는 파서에 문제가있어서 너무 많은 메모리를 사용하고있었습니다. 그 이후로 나는 캐시 파일을 지우고 상황이 반복 될 경우, 나는 그 클래스를 전부 버릴 것이다.

문제에 답변/댓글을 답한 모든 사람들에게 감사드립니다.

0

보어를 들려주기는 싫지만, 이런 종류의 차이점의 근원이 될 수있는 Apache/PHP 설정이 정확히 동일하다는 것을 확인하십시오. 또한 다음과 같은 부하가 발생합니다. 로드중인 서버에서 실행되는 코드는 충분한 논쟁이없는 리소스로 실행되는 코드와 매우 다르게 작동 할 수 있습니다.

다른 실행중인 응용 프로그램과 관련하여 영향을 줄 수있는 다른 점이 있습니까?

XHprof [1]은 요청 당 차이점이 있는지 확인하기 위해 두 서버에서 코드를 프로파일 링해야 할 가치가 있습니다. XHprof [1]은이 도구에 적합하며 프로덕션 환경에서 안전하게 실행할 수 있습니다. 지시) 문제가 어디에

[1] http://phpadvent.org/2010/profiling-with-xhgui-by-paul-reinheimer

+0

로컬 및 원격 서버 모두에 대해 config를 검토했으며 거의 ​​동일합니다 (일부 차이점이 있지만 메모리에 영향을 미치지 않아야 함). 로컬 서버에는 거의 부하가 없지만 다른 한편으로는 생산량이 매우 많습니다. 링크를 제공해 주셔서 감사 드리며 최대한 빨리 XHprof [1]을 (를) 사용하겠습니다. –

+0

감사합니다. 문제를 해결했습니다. 파일 파싱과 관련이 있습니다. 최대한 빨리 답변을 게시하겠습니다. –

관련 문제