2014-03-28 1 views
6

NewRelic은 많은 성공적인 배포로 인해 세계를 휩쓸고 있습니다. 하지만 프로덕션에서 사용하는 것은 무엇입니까?NewRelic PHP 에이전트는 얼마나 많은 오버 헤드를 추가합니까?

PHP 모니터링 에이전트는 .so 확장자로 작동합니다. 올바르게 이해하면 데이터를 필터링하여 NewRelic 클라우드로 푸시하는 다른 시스템 집계 서비스에 연결됩니다.

이것은 단순히 후드 아래에서 투명하게 작동한다는 것을 의미합니다. 그러나 이것은 실제로 사실입니까? 모니터링, 프로파일 링 또는 API 서비스는 전체 스택에 약간의 오버 헤드를 추가합니다. 확장 자체는 각 PHP 프로세스에 추가하는 0.6MB입니다.별로 관심이 없기 때문에 CPU와 IO가 신경 써야합니다.

woodzu.vipserv.org/ec2-with-newrelic.png 이미지는 NewRelic 정말 무슨 원인을 무엇을/에이전트 O (다른 라인) NewRelic 에이전트 (상단 파란색 하나)와 생산 EC2 t1.micro 인스턴스에와 w CPU 사용률

  • 을 보여줍니다 추가 오버 헤드?
  • 다른 부정적인면은 무엇입니까?
+0

또한 사이트에서 '기본'설치 설치로 newrelic을 실행할 때 성능에 어떤 영향을 주는지 (특히 대기 시간 오버 헤드가 예상 됨) 궁금합니다. 로드 밸런싱 된 이미지가 여러 개 있습니다. 그 중 하나에서 newrelic 만 실행해야합니까? – Ray

+0

결과를 비교할 수 있다면 좋을 것 같습니다. – WooDzu

답변

5

귀하의 마일리지가 설정에 따라 달라질 수 있습니다에 물어 좋은 질문처럼 등 특정 사이트의 코드베이스를 ... 보인다

추가 오버 헤드는 사용되는 메모리가 적지 만 PHP 코드 추적 및 프로파일 링 및 DB 요청 프로파일 링뿐만 아니라 분석 데이터 수집을 수행합니다. 기본적으로 모든 추가 오버 헤드가 모든 PHP 함수 호출에 연결됩니다. 컴퓨터 또는 프로파일 링에서 Xdebug 또는 ZendDebugger를 실행 한 상태에서 비슷한 오버 헤드를 볼 수 있습니다. 프로파일 링을 위해 깊숙이 들어가는 것이 가장 비용이 많이 드는 모듈이라면 어떤 리소스를 사용할 것입니다. 그러나 새로운 유물은 설정이 얼마나 집중적으로 돌아가는지를 보았습니다. 그래서 Xdebug보다 더 밝게 할 수 있습니다. .

모든 사이트에서 기본 설정 및 구성을로드 한 newrelic 공유 PHP 모듈을 사용하여 우리 회사의 웹 사이트 전반적인 서버 응답 대기 시간이 전체 15-20 % 증가했습니다. 생산 기계. 나는 PHP-fpm이 초기 응답을 생성하는 데 걸리는 시간에 대해서만 이야기하고 있습니다. 우리 사이트는 http://www.nara.me입니다. newrelic-daemon과 newrelic-sysmon 서비스도 실행되지만 응답 시간에 어떤 영향을 미치는지는 의심 스럽습니다.

틀린 말은하지 말고, 나는 새로운 유물을 좋아하지만, 필자의 특정 상황에서 히트를 치면 PHP 모듈을 우리의 모든 라이브로드 밸런싱 머신에서 실행하고 싶지는 않습니다. 우리는 항상 하나의 컴퓨터에서 계속 실행되도록 할 것입니다. 우리는 문제 해결을 위해 sysmon을 100 % 유지하고 모듈을 사용할 수 없도록 유지할 계획입니다.

내 조언은 이것이다 :

  • 랩 새로운 유물 모듈이
  • 로드되지 않은 경우가 동일한 여러 한 경우 코드가 오류없이 실행할 수 있도록 if(function_exists ($function_name)) 블록에서 새로운 유물 함수를 호출하기 서버가 동일한 코드를 공유하는로드 밸런서 뒤에 있으면 성능을 저장하기 위해 하나의 이미지에서만 PHP 모듈을 사용할 수 있습니다. 새로운 유물을 사용한다면 sysmon을 계속 실행할 수 있습니다.당신은 단지 하나 개의 서버를 한 경우
  • , 단지 당신이 그것을 필요로 할 때 공유의 PHP 모듈을 활성화 - 10 ~ 20 %의 성능 저하가

하지 않는 한 당신은 실제로 당신의 코드 또는 mysql을 프로파일 링 할 때 정보의 주요 출처가 새로운 유물 웹 사이트 인 경우 기억해야 할 또 다른 사항 : 모니터하는 시스템의 수에 따라 수익을 얻습니다. 따라서 귀하가 100 % 미만의 정보에 사용하지 말라고 설득하지 못하게하십시오. 귀하의 기계가 필요하지 않은 경우에도. 나는 FAQ 나 블로그 상태 중 하나가 기본적으로 성능에 미치는 영향을 예상해야한다고 생각하지만, 의도 한대로 그것을 사용하여 문제를 수정한다면, 지연 시간을 보상해야합니다. 나는 동의하지만, 일단 문제를 해결하면 가장 적은 수의 서버에 노출을 제한한다고 생각합니다.

+0

나는 항상 모듈을 운영하는 서버가 1 대 밖에 없다는 생각을 좋아합니다. 모든 사례에서 자세한 데이터를 제공하지는 않지만, 몇 가지 솔루션을 산출 할 수있는 정당한 추정치를 제공해야합니다. 어쨌든이 php.ini 옵션이 유망 해 보인 것처럼 더 자세히 조사 할 것입니다 : newrelic.transaction_tracer.detail = 0 – WooDzu

+0

@WooDzu 실제로 /etc/php.d 디렉토리에서'newrelic.ini'의 이름을 변경합니다 컴퓨터에서'newrelic.ini.disabled'로 이동합니다. 모듈을 실행하고 싶지 않습니다. 그런 식으로 아무것도 PHP 런타임에로드됩니다. – Ray

+0

@WooDzu 업데이트 만. 나는 내가 yum 업데이트를했을 때 자동으로 새로운 'newrelic.ini'를 생성하는 것을보고 놀랐다. 그래서 php가 다시로드되었을 때 다시 시작되었다 !!! 20 %의 성능에 주목하여 알아 냈습니다. – Ray

0

상담원이 설계 한 방식으로 오버 헤드를 추가해서는 안됩니다. 때문에 적절하게 문제를 해결하는 데 필요한 세부 사항의 수준에,이, https://support.newrelic.com

+2

안녕 Walden. 어떻게 생각 하나? 오픈 소스가 아니에요? – WooDzu

관련 문제