...

マルチスレッド動作可能な PHP を導入した event 式サーバの構築

by user

on
Category: Documents
19

views

Report

Comments

Transcript

マルチスレッド動作可能な PHP を導入した event 式サーバの構築
平成 22 年度電子情報通信学会東京支部学生会研究発表会
講演番号: 49
マルチスレッド動作可能な PHP を導入した event 式サーバの構築
D-6
Construction of the Event Type Server with Multi-thread Operable PHP
古川 快*1
Kai FURUKAWA
関根 好文*1
Yoshifumi SEKINE
*1
日本大学理工学部
College of Science and Technology, Nihon University
1. まえがき
近年,インフラ整備が進み従来ホームページで主
流だった文字を中心としたサービスはウェブログや
SNS として利用者が増加傾向にある[1].システムは
専門の人が構築するだけではなく個人でサーバを立
ち上げる人が増えている.
今回サーバの構築に使用するのはサーバの構築に
適している[2]CentOS を用いた. Web サーバとして
構築するに当たり,使用率が高いソフトウェアであ
る[3]Apache HTTP Server(以下 Apache)を使用した.
Apache で HTTP によるリクエストを受け付けて処
理を行う部分をモジュール化した Multi Processing
Module(以下 MPM)の中で,最も使用されているも
のが prefork である.これは後方互換性があり,ス
レッドを使用していないため,スレッド非対応のソ
フトウェアを使用することができる.しかし,この
方式はアクセスが増えるとサーバへの負担が大きく
なる.そのため,多数のクライアントからのアクセ
スを処理する場合はそれに応じた大量のメモリと高
速な CPU を用意しなければならないという問題が
ある.
本稿では,MPM を変更したサーバの構築の負荷
軽減について検討を行った.
ルチスレッドを使用できる仕様の PHP を導入する
ことができた.
Figure 1. Stress test for access.
2. 本論
今回使用した CentOS では以下の 3 つの MPM を
使用することができる.
(1)prefork
前もって子プロセス(fork)を起動させておき,ク
エストに応じて子プロセスを割り当てる.リクエス
トがあってから子プロセスを起動させると時間がか
かるためこの手法を用いている.
(2)worker
リクエストに応じて必要な子プロセスを起動して,
さらにプロセスがリクエスト数に応じてスレッドを
起動し,リクエスト処理を行う.prefork に比べて
子プロセスの数が少なく,変わりにスレッドを用い
ることによりメモリの節約ができる.
(3)event
worker と同じマルチスレッド動作だが,クライ
アントとの接続が継続しているか定期的に確認を行
う Keep-Alive の手法に違いがある.Keep-Alive の処
理をクライアントからの処理を行うスレッドとは別
のスレッドに割り振って通信を処理することにより
サーバへの負荷を軽減することができる.
PHP を導入するに当たり,PHP はマルチスレッ
ドを使用した MPM のサポートを行っておらず,そ
のままの PHP ではスレッドを使用した event では起
動することができない.そのため,設定用の RPM
ファイルを書き換える必要がある.これにより,マ
-49-
図 1 に構築したサーバの接続テスト結果の一例を
示す.このテストではリクエスト数を同時接続数の
10 倍としてアクセスを行い,1 つ当りのリクエスト
を処理するのにかかる時間を測定した.この結果で
は同時接続数が 100 を超えたあたりから single thred
の処理時間が大きく変化しており,300 を超えると
multi thred の 2 倍ほどかかることから multi thred を
使用することによって大量にサーバへのアクセスが
あった場合の処理能力が改善できた.
3. まとめ
今回, multi thred 環境での構築を行い,接続テス
トにより同時接続数が 300 を超えると処理時間が半
分程度にできた.その結果,マルチスレッド環境で
の構築を行うことにより,大量のアクセスがあった
場合のアクセス処理にかかる時間の改善を行うこと
ができることを示した.
今後は, Web ページの内容を変えることにより,
処理時間にどのような変化があるか検証を行う予定
である.
参考文献
[1] 福島学他:「Solaris を使用したサーバ構築方法
について」,日本文理紀要,第 37 巻,第 1 号,pp.4353,2009.
[2] 平初他:「CentOS サーバ構築バイブル 改訂第
二版」,毎日コミュニケーションズ,2009.
[3] 辻秀典他:「できる PRO CentOS サーバ CentOS 5
対応」,インプレスジャパン,2009.
Copyright © 2011 IEICE
Fly UP