PHP를 사용하는 웹 사이트는 초당 5000 회의 요청과 같이 매우 많은 트래픽이 발생합니다. 각 요청마다 데이터를 기록하지만 단일 파일로 기록합니다. 언제든지 요청 중 하나만 파일에 쓸 수 있으므로 다른 요청은 전체 응답 시간에 영향을주는 큐에 대기합니다. 데이터를 기록해야합니다. 중요합니다. 이 시나리오를 최적화하기 위해 어떻게 접근 할 수 있습니까?여러 프로세스가 동일한 로그 파일에 쓰려고하는 프로세스를 최적화하는 방법
2
A
답변
0
두 가지 옵션이 있습니다.
귀하의 요구 사항은 하나의 큰 로그 파일에 쓰고 다른 곳은 쓰지 않아야합니다. PHP 스크립트를 사용하여 이러한 항목을 먼저 대기열에 기록 할 수 있습니다. 사용할 수있는 RabbitMQ 또는 ActiveMQ와 같은 많은 메시지 큐잉 플랫폼이 있습니다. 이러한 로그 항목이 큰 페이로드가 아니라고 가정하면 로그에 항목을 입력하라는 사용자 요청은 메시지를 대기열로 삽입하도록 지시 할 수 있습니다. 큐를 듣고 지속적으로 로그 파일에 계속 기록하는 또 다른 백엔드 프로세스 (PHP 스크립트 일 수 있음)가 있습니다. 클라이언트가 대기열 메시지 (https://www.rabbitmq.com/tutorials/tutorial-one-php.html)를 사용하는 방법에 대한 자세한 설명은 다음과 같습니다.
또한 파일 추가 메커니즘을 사용하는 로깅 프레임 워크 인 Apache Log4php과 같은 것을 사용할 수도 있습니다. 간단히 메소드를 호출하여 중요한 정보를 쉽게 푸시 할 수 있습니다.
$ logger-> info ("기록 할 메시지입니다.");
같은 파일에 여러 요청 로깅의 복잡성을 처리해야합니다. 당신은 그 (것)들을 그 (것)들이 일까지 등등 파일을 헤어 지도록 할조차 수있다.
희망은 이것이 돕는다!
관련 문제
- 1. Boost.Log - 하나의 로그 파일에 여러 프로세스가 있습니까?
- 2. .rc 파일에 쓰려고하는 VBS 스크립트가 오류를 반환합니다.
- 3. 어떤 데몬 프로세스가 파일에 쓰는지 확인하는 방법
- 4. 프로세스가 다른 프로세스를 기다리는 방법
- 5. 프로세스가 동일한 프로그램의 다른 프로세스를 인식하도록 만드는 방법
- 6. 여러 개의 socket.io 프로세스가 동일한 포트를 공유합니까?
- 7. 프로그램에서 동일한 프로세스를 여러 번 호출하는 방법
- 8. 두 프로세스를 fork하면 여러 프로세스가 발생합니다
- 9. 동일한 민감도 목록을 가진 여러 프로세스가 있음
- 10. R foreach 스레드를 동일한 로그 파일에 쓰는 방법
- 11. 데몬 프로세스가 사용자 지정 로그 파일에 로그온하지 않습니다.
- 12. 동일한 BPEL 프로젝트에서 여러 BPEL 프로세스를 CApp에 추가하는 방법
- 13. 동일한 파일에 액세스하는 여러 프로세스
- 14. 동일한 파일에 액세스하는 여러 프로세스에서 예외가 발생합니다.
- 15. StringVar의 내용을 파일에 쓰려고하는 코드가 작동하지 않습니다.
- 16. 동일한 이미지를 여러 개 최적화하는 방법은 무엇입니까?
- 17. 자식 프로세스가 파일에 쓰기
- 18. 스크립트 작성하는 여러 프로세스가
- 19. Process.Start에서 텍스트 파일에 로그
- 20. 리눅스에서 여러 프로세스를 모니터링하는 방법
- 21. 프로세스가 다른 프로세스를 만들고이를 추적하는 방법
- 22. 동일한 테이블에서 여러 개의 "WHERE (Select ....) = value"를 최적화하는 방법
- 23. 로그 파일에 액세스하는 방법
- 24. 어떤 프로세스가 내 DLL 프로세스를 생성합니까?
- 25. 작업자 프로세스가 동일한 포트에서 수신 대기하는 방법
- 26. MySQL 여러 프로세스가 동일한 데이터 선택
- 27. 피라미드와 rq로 동일한 로그 파일에 쓰기
- 28. 프로세스를 죽이면 다른 프로세스가 죽는다
- 29. 여러 프로세스가 파이썬에서 동일한 Tkinter 창에 미치는 영향은 무엇입니까?
- 30. 여러 테이블을 사용하여 SQL 쿼리를 최적화하는 방법
대신 데이터베이스에 로그인 한 다음 데이터 테이블을 로그 파일로 처리하는 기능을 사용할 수 있습니까? – Cricket
각 사용자 (또는 로그 항목)에 대한 임시 텍스트 파일을 만들고 특정 간격으로 파일을 병합 할 수 있습니다. 또는 파일을 작성하는 파일 관리자/랩퍼를 작성하고 로그 항목을 추가 한 후 백그라운드에서 마스터 파일 입력을 위해 큐에 대기 시키십시오. – Nitin
모든 요청에 대해 db에 @Cricket 로그를 쓰는 것은 좋은 생각이 아닙니다. 벤치마킹되지 않은 성능에 관해서는 이야기 할 수 없습니다. – user3107673