このトピックでは、ApacheBenchを使用してLinux Elastic Compute Service (ECS) インスタンスでストレステストを実行するときに、「apr_pollset_poll: 指定されたタイムアウトが期限切れ」というエラーメッセージが表示される原因と解決策について説明します。
問題の説明
ab -c 10 -n 5000 http:// 192.168.XXX.XXX/ などのApacheBenchコマンドを実行してLinux ECSインスタンスでストレステストを実行すると、次のエラーメッセージが表示されます。
apr_pollset_poll: The timeout specified has expired原因
同時ストレステスト要求の数が、Linux ECSインスタンスで確立できる最大接続数を超えています。
解決策
上記の問題を解決するには、Linux ECSインスタンスにログインし、カーネルパラメーターファイル (/etc/sysctl.conf) を変更し、-kオプションをApacheBench testコマンドに追加します。
Linux ECSインスタンスに接続します。
詳細については、接続方法の概要をご参照ください。
カーネルパラメーターファイルを変更します。
次のコマンドを実行して、カーネルパラメーターファイル (
/etc/sysctl.conf) を開きます。vim /etc/sysctl.confカーネルパラメーターファイルに次の内容を追加します。
net.ipv4.netfilter.ip_conntrack_max = 3276800 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_reuse = 0 net.ipv4.tcp_orphan_retries = 1 net.ipv4.tcp_fin_timeout = 25 net.ipv4.tcp_max_orphans = 8192 net.ipv4.ip_local_port_range = 32768 61000Escキーを押し、:wqと入力し、enterキーを押します。
変更を有効にするには、次のコマンドを実行します。
sysctl -p /etc/sysctl.confApacheBench testコマンドに
-kオプションを追加し、コマンドを実行して問題が解決しないかどうかを確認します。次の例では、
-kオプションがab -c 10 -n 5000 http:// 192.168.XXX.XXX/コマンドに追加されます。ab -c 10 -n 5000 -k http://192.168.XXX.XXX/