0

NGINX と PHP を搭載した 8 つの負荷分散された Web サーバーがあります。これらの各 Web サーバーは、中央の MySQL データベース サーバーにデータを送信します。それらの [Web サーバー] は、別のログ サーバー (行ごと) のテキスト ファイルに同じデータ (わずかにフォーマットされていますが) を投稿します。つまり、1 つのデータベース挿入 = ログ ファイルの 1 行です。

ロギングを行う PHP ファイルのアクティブなコードは、次のようになります。

file_put_contents(file_path_to_log_file, single_line_of_text_to_log, FILE_APPEND | LOCK_EX);

私が抱えている問題は、これを 1 秒あたり 5,000 程度のログにスケーリングすることです。操作が完了するまでに数秒かかり、ログ サーバーの速度が大幅に低下します。

物事を劇的にスピードアップする方法を探しています。次の記事を見ました: Performance of Non-Blocking Writes via PHP

ただし、テストから、作成者は書き込み前のすべてのログ データにアクセスできるという利点があるように見えます。私の場合、各書き込みは Web サーバーによってランダムに開始されます。

PHP の書き込みを大幅に高速化する方法はありますか?! それとも、データベース テーブルにログを記録し、後で一定間隔でデータをテキスト ファイルにダンプする必要がありますか?!

参考までに、従来の「ロギング」の意味で上記のテキスト ファイルを使用しているわけではありません。テキスト ファイルは、後で Google BigQuery にフィードする CSV ファイルです。

4

1 に答える 1