質問するログイン新規登録

回答編集履歴

1

追記

2015/12/25 08:35

投稿

KenTerada
KenTerada

スコア751

answer CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  スレッド数を増やせば,空いている子スレッドが無いために親がリクエストを保留するという待ちは減らせるかもしれませんが,同時に実行できるスレッド数にはCPUに依存する限界がありますから,子スレッドがリクエストをさばくためにCPUのスケジューリング待ちをする時間はどうしても存在します.
4
4
  OSの機能を使って作ったスレッドであればOSのスケジューラに依存しますし,ユーザレベルのスレッド機能を使って作ったスレッドであればそのライブラリか何かのスケジューラに依存します.
5
+ 一般ユーザレベルスレッドの方が高速に切り替えられると言われているので,互換性は犠牲になりますが,スループットを向上させるためには良いかもしれません.
5
6
 
6
7
  逆に,子スレッドの空きは十分にあるのに,親スレッドのリクエストのさばき方が悪いために遅くなる場合もあります.
7
8
  どのような関数でリクエストの到来を待っているのかによって,同時接続数の上限も変動する可能性があります.(Linuxであればselect,poll,epollなどたくさんあります)
8
9
 
9
- まずは,どこがサーバプログラムのボトルネックになっているのか調査してみてはいかでしょうか
10
+ まずは,どこがサーバプログラムのボトルネックになっているのか調査が必要だと思います
10
11
  また単一のサーバプログラムで処理をすべて行うためには,上述のような限界もありますので,ロードバランサの導入も検討してみてください.
11
12
  (「150アクセスごとに分け, スケジューリング」というのはロードバランサのことでしょうか?)