2時間ごとにAPIとElasticsearchサーバー間のタイムアウト

2時間ごとにAPIとElasticsearchサーバー間のタイムアウト

サーバーで奇妙な問題が発生しました。 (Debian 8.9)PHPアプリケーションであるAPIがあります。別のサーバーにあるElasticsearchインスタンスを要求します。

2時間ごとにエラー500が発生しますが、このエラーは1〜2分続き、これ以上持続することはほとんどありません。

[2017-10-19 20:52:10] +2 hours
[2017-10-19 22:51:59] +2 hours
[2017-10-20 00:52:02] +2 hours
[2017-10-20 02:52:14] +2 hours
[2017-10-20 04:52:28] +2 hours

時には+4時間または+6時間になることもあります。

エラーの詳細は次のとおりです。

request.CRITICAL: Uncaught PHP Exception Elastica\Exception\Connection\HttpException: 
"Operation timed out" 

これは非常に明白です。 APIは、httpクライアントが指定したタイムアウトに達するまでelasticsearchインスタンスに接続しようとします。

この問題の原因は何ですか?これらの問題が発生した場合、どのようにデバッグしますか?

もちろん、後ですべてのURL参照を確認すると、すべてがうまく機能します。

ベストアンサー1

カーネルでsomaxconnパラメータを増やすことをお勧めします。

次に追加/etc/sysctl.conf:

net.core.somaxconn=512

次に、次を実行します。

sudo sysctl -p

また、次のような/etc/redis.confレイズでも:tcp-backlog

tcp-backlog 512

Redis設定ファイルで、次の操作を行います。

TCP Listen() バックログ。

1秒あたりの要求数が多い環境では、低速なクライアント接続の問題を回避するために、より高いバックログが必要です。 Linuxカーネルは自動的に/proc/sys/net/core/somaxconnの値に切り捨てられるので、望ましい効果を得るにはsomaxconnとtcp_max_syn_backlogの両方を増やす必要があります。

おすすめ記事