NGINX와 PHP로 구동되는 8 개의로드 밸런싱 웹 서버가 있습니다. 이 웹 서버는 각각 중앙 MySQL 데이터베이스 서버에 데이터를 게시합니다. 그들은 [웹 서버]도 별도의 로그 서버 (한 줄씩)의 텍스트 파일에 동일한 데이터 (약간 포맷 됨)를 게시합니다. 즉, 하나의 데이터베이스 삽입 = 로그 파일의 한 줄.PHP 파일 쓰기 속도 향상
file_put_contents(file_path_to_log_file, single_line_of_text_to_log, FILE_APPEND | LOCK_EX);
내가 초당 5,000 정도 로그에이 확장되는 데 문제 :
로깅을하고있는 PHP 파일의 활성 코드는 무엇인가 아래처럼 보인다. 작업을 완료하는 데 몇 초가 걸리고 로그 서버가 상당히 느려집니다.
나는 일들을 극적으로 빠르게 할 방법을 찾고있다. 나는 다음 기사를 보았다 : Performance of Non-Blocking Writes via PHP.
그러나 테스트에서 작성자는 쓰기 전에 모든 로그 데이터에 액세스 할 수있는 이점이 있습니다. 필자의 경우, 각 쓰기는 웹 서버에 의해 무작위로 시작됩니다.
PHP 작성 속도를 높이는 방법이 있습니까?! 아니면 그냥 데이터베이스 테이블에 로그 한 다음 나중에 데이터를 시간 간격으로 텍스트 파일로 덤프해야합니까?!
그냥 정보 : 전통적인 '로깅'의미에서 텍스트 파일을 사용하고 있지 않습니다 ... 텍스트 파일은 나중에 Google BigQuery에 먹일 CSV 파일입니다.
왜 mysql 바이너리 로그를 사용하지 않습니까? 그것은 당신의 모든 실제 로깅 thats 것? 귀하의 IOP 한도에 도달 할 확률이 높습니다. IOP 당 더 많은 데이터를 쓸 수 있습니다. – exussum
@ AD7six 데이터는 로깅 용이 아니며 나중에 Google BigQuery에 피드해야하는 CSV 데이터입니다. 나는 그 질문을 갱신 할 것이다. –