
送信時に too many open files エラーが発生した場合
BoltzEngine で同時に大量のメッセージを通知する場合、以下のようなエラーメッセージがログに記録される場合があります。
|
|
エラーの原因
この too many open files エラーは、1つのプロセスが一定以上(ulimit -n以上)のファイルを同時に開いた場合に発生するエラーです。 BoltzEngine では、1つの通知リクエストを複数に分割して並列実行するため、ulimit -n の値が小さい場合、ネットワーク接続数が上限を超えてしまうため上記のエラーが発生します。
現在の ulimit -n
値は、/proc/(boltz slaveのPID)/limits
から Max open files
の値を読むと確認できます。
対応方法
エラーの原因は上記の通りのため、ulimit -n
の値を増やせば回避可能です。
EL6版をお使いの場合は、/etc/init/boltz-slave.conf を以下のように修正します。
|
|
EL7版の場合は、/etc/systemd/system/boltz-slave.service に、
|
|
を追加してサービスを再起動してください。BoltzEngine での ulimit -n
値は、4096 程度に設定することを推奨します。
大量のコネクションを利用するのはboltz-slaveだけのため、他のサービスはデフォルト値で問題ありません。
注意事項
このエラーは、1 つの通知リクエストに含まれるターゲットの一部にだけ発生します。 リクエストした結果、正常に終わったメッセージは端末に届きますが、 エラーとなったメッセージは、APNs/FCM などのプッシュサービスに送ることができないないため届きません。