HOME / コンピュータTips / Solaris / Apache / Solaris 11.1でFastCGIのphpを使う(worker・64bit)

Date: 2013/02/22 |  このエントリーをはてなブックマークに追加  |  Tags: Solaris11.1, php5.3, fcgi, fpm, apache, worker, 64bit

Solaris11.1のphp5.3でfpmを使わずにFastCGIを使う方法。Apacheをworker 64bitで利用して効果UP

Solaris 11ではphpは32bit apacheのpreforkでしか動作しません。これはphpがworkerなどで動作させることを推奨していないためです。

昨今のphpアプリは、巨大なメモリをつかうこともあって油断すると、httpdが凶悪にふくれあがります。どのぐらいかというとこのぐらいです。

スクリーンショット 2013-02-22 22.57.29.png

sizeを見ればわかりますが、300Mオーバーのhttpdが何匹もいます。このhttpd達はforkであるため、約300M×個数の数すべてのメモリを使うわけではないですが、それに近いメモリを消費します。

httpdの数は、ウェブサーバが待ち受けできるスロット数のようなものです。これはphpだけでなくcssやjsなどの小さなファイルのやり取りにも使っています。特別なことをしていない限り1つのページにだいたい1つ程度のphpプログラム(.htmlをレンダリングするため)を使うと思います。最近のウェブはリッチなので、1つのページの構成要素はいまや50ファイルぐらいあったりするので、phpだけでなく残りのファイル全て「この太ったhttpd」が応対することになります。

これがmod_phpの最大の弱点です。

これを何とかするにはphpのプログラムを実行するエンジンと、それ以外のファイル転送のエンジンを分ける方が都合がよくなります。これをするにはFastCGIにphpのプロセス管理だけを行わせ、apacheはforkではなくworkerで動くモードで実行させます。php5.3以降ならfpmを使うのがいいのですが、Solaris11.1は比較的簡単にfcgidを使ってこれを肩代わりできるので、使ってみます。

インストール

まずはFastCGIをインストールします。

sudo pkg install -v web/server/apache-22/module/apache-fcgid

モードをworkerにします。

sudo svccfg -s /network/http:apache22 setprop httpd/server_type = worker && sudo svcadm refresh -s apache22 && sudo svcadm restart -s apache22

php.iniはphp-cgiがあるディレクトリ以下でしか読まないらしいので、そこに設置します。正しい方法かわからないんですが・・・。

cd /usr/php/5.3/bin ; sudo ln -s /etc/php/5.3/php.ini .

いくつかのアプリは動かないので、元に戻すならpreforkにしましょう。

sudo svccfg -s /network/http:apache22 setprop httpd/server_type = prefork && sudo svcadm refresh -s apache22 && sudo svcadm restart -s apache22

なーんの問題もないなら、64bitにしてみるのもありです。

sudo  svccfg -s /network/http:apache22 setprop httpd/enable_64bit = true

スクリーンショット 2013-02-22 22.42.53.png

わ〜い。Server APIがCGI/FastCGIになっています。

スクリーンショット 2013-02-22 22.44.25.png

実のところ、prstat -s sizeの出力結果の2つは同じマシンではないのですが、ほぼ同じバージョンのWIKIPLUS 2で試しています。結果を見るとすさまじいメモリ消費はhttpdからphp-cgiが肩代わりしています。FastCGIはリクエストの数だけ増えていきますが、純粋にphpが動くための量しか増えません。1つのworkerはマルチスレッドで沢山のレスポンスが返せるので、ページを構成する残りのファイルはworkerのapacheが応対することになるというわけです。


コンピュータTips/Solaris/Apache

Recent Updates

SONY WH-1000XM3

自分用メモです。 ノイズキャンセラーの性能が良い。 WH-1000Xのころは、ノイズキャンセラーを有効すると、音は聞こえないのに妙な音圧があったが、それがかなり軽減。個人的には気にならなくなった。 また、WH-1000Xのころは、ノイズキャンセラーを無効にしても、なんか作られたような音が出ていたような気がしたが、割と普通に聞こえる。 USB-Cになったのも良い。飛行機でも使う …
»続きを読む

Catalina(10.15)

Catalina Beta を入れ始めたので、自分用のまとめ。 2019/10/8、Catalinaが振ってきたので製品版用に記載を変えました。 32bitアプリを確認すること。 Activity Monitorで32bitアプリがわかるので、そういうアプリがあるなら代替品を見つけておくこと。 /etc以下のいくつかのファイルをバックアップしておくこと。 /etc …
»続きを読む

ディスクの不良を確認する(iostat -EnのError等)

ディスク関係のスタックをざっくり書くと次の様になっています 例、SAS Expanderを使う場合、 例、AHCIなどを使う場合、 これらのエラーは、次の様なコマンドで知ることができます。 出力結果例 このなかで、 たとえば、SATAディスクを利用している際に負荷が上がってしまい、ディスクの応答が間に合わないシチュエーションでは、Transport Errorが一気に …
»続きを読む

2017年、新年明けまして、おめでとうございます。

日記/2017年、新年明けまして、おめでとうございます。

新年明けまして、おめでとうございます。今年もよろしくお願いします。 昨年中は、皆様にお世話になりました。 昨年は、コツコツと3年程前から行ってきた改革がある程度完成された年で、この先5年、10年を見据えて、次のフェーズへと進む為の土台が完成した年でもありました。 それにキャッチアップする形で、個々の従業員一同が、役割を自覚し、明確に動けた年であったかと考えています。 …
»続きを読む

RSA鍵認証のみにし、Password認証を無効化する

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。 古いOpenSSHや、SunSSHの場合は、これも無効にします。 ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。 まず、Password認証を無効にする場合、 PasswordAut …
»続きを読む

Nexus7 2013をMarshmallow(Android 6.0)化

OTAでない方法で。 だいたい ここに書いてある方法 なんだけど、adbなどが一式使えている状態で。 まずは自分の機種のものをダウンロードする。僕のは、 Android 6.0 Marshmallow for Nexus 7 2013 Wi-Fi 。tgzを展開し、zipも解いておく。 まずはboot loaderへ。 bootloader自体のアップデート。一式、updat …
»続きを読む

OS X 10.11 El Capitanで、phpのモジュールインストール

Yosemiteからのアップデートは割と簡単です。なぜならYosemite時に、すでにapache 2.4になり、php 5.5になっているから(笑 アップデート前に、まずはphp.iniとhttpd.confをバックアップしておきましょう きになるなら、hostsとかapache以下全てをバックアップしておいてもいいかも。 後はEl Capitanにアップデートする。 アッ …
»続きを読む

EasyAcc Powerbank PB4000CB

スマフォTips/モバイルバッテリー/モバイルバッテリー製品レビュー/EasyAcc Powerbank PB4000CB

薄型のモバイルバッテリーEasyAcc Powerbank PB4000CBです。 今や、モバイルバッテリーは大型のものが好まれるのか、隙間無く商品があります。20,000mAh越えで、「でけえ!」とか言ってますけど、大きいのを探せば、100Wh(27,000mAh)、200Wh当たり前、探せば500Wh(135,000mAh)とか、もっともっとあるのです。用途がどんどん異なっていくので …
»続きを読む

最新  |  << 前ページ  |  次ページ >>  |  最初