2016-08-01 2 views
2

PHP를 사용하는 웹 사이트는 초당 5000 회의 요청과 같이 매우 많은 트래픽이 발생합니다. 각 요청마다 데이터를 기록하지만 단일 파일로 기록합니다. 언제든지 요청 중 하나만 파일에 쓸 수 있으므로 다른 요청은 전체 응답 시간에 영향을주는 큐에 대기합니다. 데이터를 기록해야합니다. 중요합니다. 이 시나리오를 최적화하기 위해 어떻게 접근 할 수 있습니까?여러 프로세스가 동일한 로그 파일에 쓰려고하는 프로세스를 최적화하는 방법

+0

대신 데이터베이스에 로그인 한 다음 데이터 테이블을 로그 파일로 처리하는 기능을 사용할 수 있습니까? – Cricket

+0

각 사용자 (또는 로그 항목)에 대한 임시 텍스트 파일을 만들고 특정 간격으로 파일을 병합 할 수 있습니다. 또는 파일을 작성하는 파일 관리자/랩퍼를 작성하고 로그 항목을 추가 한 후 백그라운드에서 마스터 파일 입력을 위해 큐에 대기 시키십시오. – Nitin

+0

모든 요청에 ​​대해 db에 @Cricket 로그를 쓰는 것은 좋은 생각이 아닙니다. 벤치마킹되지 않은 성능에 관해서는 이야기 할 수 없습니다. – user3107673

답변

0

두 가지 옵션이 있습니다.

  1. 귀하의 요구 사항은 하나의 큰 로그 파일에 쓰고 다른 곳은 쓰지 않아야합니다. PHP 스크립트를 사용하여 이러한 항목을 먼저 대기열에 기록 할 수 있습니다. 사용할 수있는 RabbitMQ 또는 ActiveMQ와 같은 많은 메시지 큐잉 플랫폼이 있습니다. 이러한 로그 항목이 큰 페이로드가 아니라고 가정하면 로그에 항목을 입력하라는 사용자 요청은 메시지를 대기열로 삽입하도록 지시 할 수 있습니다. 큐를 듣고 지속적으로 로그 파일에 계속 기록하는 또 다른 백엔드 프로세스 (PHP 스크립트 일 수 있음)가 있습니다. 클라이언트가 대기열 메시지 (https://www.rabbitmq.com/tutorials/tutorial-one-php.html)를 사용하는 방법에 대한 자세한 설명은 다음과 같습니다.

  2. 또한 파일 추가 메커니즘을 사용하는 로깅 프레임 워크 인 Apache Log4php과 같은 것을 사용할 수도 있습니다. 간단히 메소드를 호출하여 중요한 정보를 쉽게 푸시 할 수 있습니다.

    $ logger-> info ("기록 할 메시지입니다.");

같은 파일에 여러 요청 로깅의 복잡성을 처리해야합니다. 당신은 그 (것)들을 그 (것)들이 일까지 등등 파일을 헤어 지도록 할조차 수있다.

희망은 이것이 돕는다!

관련 문제