SOCKSプロキシの同時接続数を簡易的に増やし、メモリ使用率を改善前後で確認

SOCKSプロキシの同時接続数を簡易的に増やし、メモリ使用率を改善前後で確認

SOCKSプロキシの同時接続数を簡易的に増やし、メモリ使用率を改善前後で確認
2026.01.13

SOCKSプロキシサーバへの同時接続数を簡易的に増やすテストを行い、プロキシサーバのメモリ使用率を、パフォーマンス改善対応の前後で確認しました。その際の経緯や手順などを記載します。

経緯と概要

delegateで動作するSOCKS5のプロキシサーバがありました。EC2(t3.small)(メモリ2G)(Amazon Linux 2023)で動作させていて、delegateの設定で同時接続数は2,048に設定していました。当初は同時接続数は1,000以下で問題ありませんでしたが、利用者の増加に伴い、徐々に増加していき、1,500を超えました。また、メモリ使用率も70%を超えてきました。
(今回の環境では、同時接続数とメモリ使用率以外は、パフォーマンスは問題なさそうでした)

同時接続数は、時間が経つにつれて(利用者が増加して)単調増加していく傾向でした。このままでは上限に達して利用できなくなると考えて、以下の対応を検討しました。
- delegateの設定で同時接続数を 2,048 -> 4,096 へ増加

また、アプリケーション(delegate)の設定変更のみでは、それまでの傾向からメモリ使用率も単調増加して、インスタンスタイプもスペックアップさせないと、HWリソース(メモリ使用率)が100%に達してしまうと予想されました。
そこで、以下も合わせて対応することを検討しました。
- EC2のインスタンスタイプを t3.small から t3.medium へ変えて、メモリを2Gから4Gに増加させる

今回対象のSOCKS5のプロキシサーバは、通常稼働している本番機と同じ構成の検証機がありました。そこで、まずは検証機で以下のようなテストを行い、同時接続数とメモリ使用率の相関関係を確認して、上記の対策が有効であることを確認することにしました。

1. 検証機で現状設定のまま、同時接続数を増やしていくテストを行う
同時接続数の増加に伴いメモリ使用率が増えて、同時接続数の上限(2,048)あたりで、メモリ使用率が100%に近づくことを確認する。・・・同時接続数が増えるのに伴い、メモリ使用率も増加する相関関係を確認する。

2. 検証機で以下の改善対応を行う

  • delegateの設定で同時接続数を 2,048 -> 4,096 へ増加
  • EC2のインスタンスタイプを t3.small から t3.medium へ変えて、メモリを2Gから4Gに増加させる

3. 検証機で上記の対応後、同時接続数を増やしていくテストを行う
同時接続数の増加に伴いメモリ使用率が増えて、同時接続数の上限(4,096)あたりで、メモリ使用率が100%に近づくことを確認する・・・上記改善により、改善前の上限値の2,048では、メモリ使用率が50%程度で利用できることを確認

また今回のテストは、同時接続数増加時の、SOCKS5のプロキシサーバのメモリ使用率が概ね確認できれば目的は達成できると考えました。今回は、クライアント側はMac PC1台で、proxychains4(proxychains-ng) と wrk コマンドを利用して簡易的に行いました。以下のような形です。

Mac PC(M1) 1台 -> SOCKS5プロキシ(delegate) -> テスト用 Webサーバ

以下に、上記作業の詳細を記載します。

テストの事前準備

クライアント側のMac PCに proxychains-ng と wrk をインストールします。

brew install proxychains-ng
brew install wrk

また、proxychains-ngの設定ファイル「/opt/homebrew/etc/proxychains.conf」に、SOCKS5プロキシサーバのIPアドレスとポート番号を設定します。設定ファイルの「[ProxyList]」の記述の部分を以下のように設定します。(デフォルトで記述されているsocks4の部分はコメントアウトしました)

[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
# socks4        127.0.0.1 9050
socks5  <SOCKS5プロキシサーバのIPアドレス> <ポート番号>

これで、proxychains4(proxychains-ng)で、設定したSOCKS5プロキシ経由での通信ができるようになります。

現状設定のまま、同時接続数を増やしていくテスト

同時接続数を以下のように増加させていきました。Mac上でproxychains4とwrkを利用して簡易的に行いました。
それぞれMacで実行したコマンドと、確認したSOCKS5プロキシサーバのメモリ使用率も記載します。

テスト項目 コマンド SOCKS5プロキシサーバのメモリ使用率
1,000接続を3分維持 proxychains4 wrk -t16 -c1000 -d180s <テスト用WebサーバのURL> 約56%
1,500接続を3分維持 proxychains4 wrk -t20 -c1500 -d180s <テスト用WebサーバのURL> 約76%
1,800接続を3分維持 proxychains4 wrk -t24 -c1800 -d180s <テスト用WebサーバのURL> 約84%
2,000接続を3分維持 proxychains4 wrk -t32 -c2000 -d180s <テスト用WebサーバのURL> 約91%

(今回の該当サーバは、Mackerelでメモリ使用率などが確認可能になっていましたので、Mackerelで確認した結果のグラフも添付します)
01

上記の通り、本番機と同じような状況(1,500接続で、メモリ使用率が70%程度)になることが確認できました。また、以下が確認できました。

  • 同時接続数が増えるのに伴い、メモリ使用率が増加する相関関係
  • 同時接続数が2,000のあたりで、メモリ使用率が100%近くなる

このため、検討していた以下の対策が有効になると、改善対応前の検証機のテストでも予想ができました。

  • delegateの設定で同時接続数を 2,048 -> 4,096 へ増加
  • EC2のインスタンスタイプを t3.small から t3.medium へ変えて、メモリを2Gから4Gに増加させる

引き続き、検証機で上記の改善対応と、対応後に同時接続数を増加させるテストを行い、改善結果の確認も行います。

改善の対応作業

まず、インスタンスタイプの変更は、マネジメントコンソールの「EC2」より該当インスタンスを指定して、「アクション->インスタンスの設定->インスタンスタイプを変更」より、t3.small から t3.mediumへ変更しました。

次に、delegateの設定ですが、今回の環境では「/etc/delegate/conf.d/」以下に設定ファイルがあり、以下の箇所を変更して、OSを再起動しました。

(変更前)
MAXIMA=delegated:2048
   ↓
(変更後)
MAXIMA=delegated:4096

なお、以下のパラメータは当初より 4096になっていました。

MAXIMA=listen:4096

改善後の、同時接続数を増やしていく簡易的なテスト

上記の改善対応を行ったので、改善前と同様に同時接続数を増やしていく簡易的なテストを行い、メモリ使用率を確認しました。
それぞれMacで実行したコマンドと、確認したSOCKS5プロキシサーバのメモリ使用率も記載します。

テスト項目 コマンド SOCKS5プロキシサーバのメモリ使用率
1,000接続を3分維持 proxychains4 wrk -t16 -c1000 -d180s <テスト用WebサーバのURL> 約28%
1,500接続を3分維持 proxychains4 wrk -t20 -c1500 -d180s <テスト用WebサーバのURL> 約37%
2,000接続を3分維持 proxychains4 wrk -t32 -c2000 -d180s <テスト用WebサーバのURL> 約45%
2,500接続を3分維持 proxychains4 wrk -t32 -c2500 -d180s <テスト用WebサーバのURL> 約54%
3,000接続を3分維持 proxychains4 wrk -t32 -c3000 -d180s <テスト用WebサーバのURL> 約63%
3,500接続を3分維持 proxychains4 wrk -t32 -c3500 -d180s <テスト用WebサーバのURL> 約71%
3,800接続を3分維持 proxychains4 wrk -t32 -c3800 -d180s <テスト用WebサーバのURL> 約76%

(Mackerelで確認したメモリ使用量のグラフも添付します)
02

上記の通り、改善前は2,000接続でメモリ使用率が100%近かったのが、50%程度に減ったことがわかりました。
また、2,000接続を超えても利用できることが確認できました。
以上より、簡易的なテストですが、想定していた対策が有効になると確認できました。

なお、3,800接続でメモリ使用率が76%で、100%から離れた数値ですが、これは、クライアントPC側やテスト用のWebサーバ側のパフォーマンスも影響していると想定されます。
しかし今回の簡易的なテストでは、2,000接続を超えて利用できることと、その際にメモリ使用率が50%程度であることが確認できたため、今回の目的は果たせましたので、今回については問題ないと考えました。

おわりに

SOCKSプロキシサーバへの同時接続数を簡易的に増やすテストを行い、プロキシサーバのメモリ使用率を、パフォーマンス改善対応の前後で確認しました。この記事が皆様のお役に立てば幸いです。

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。
※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

FacebookHatena blogX

関連記事