HOME / コンピュータTips / Solaris / Apache / Solaris11標準のApacheを64bitで動作させる

Date: 2015/01/21 |  このエントリーをはてなブックマークに追加  |  Tags: Solaris, Solaris 11, Apache, 64bit, 違い

Solaris 11 標準のApacheを64bitモードで動作させる

Apacheは通常にインストールします。

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

64bitで動かすためには、次の様に行います。

sudo svcadm disable -s apache22
sudo svccfg -s /network/http:apache22 setprop httpd/enable_64bit = true
sudo svcadm refresh -s apache22
sudo svcadm enable -s apache22

戻し方

sudo svcadm disable -s apache22
sudo svccfg -s /network/http:apache22 setprop httpd/enable_64bit = false
sudo svcadm refresh -s apache22
sudo svcadm enable -s apache22

restartせずに最初にdisableしているのは、起動するDaemonが違うため、色々と不具合がでやすいためです。

SolarisのApacheモードSolarisのApacheモード

どちらが上がっているか?判定方法

ps -aef | grep httpd

64ビットだとこうなる。

webservd  2184  2180   0   02:12:12 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start
webservd  2183  2180   0   02:12:12 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start
webservd  2181  2180   0   02:12:12 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start
webservd  2187  2180   0   02:12:12 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start
    root  2180 28381   0   02:12:11 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start
webservd  2182  2180   0   02:12:12 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start
webservd  2186  2180   0   02:12:12 ?           0:00 /usr/apache2/2.2/bin/amd64/httpd -D 64bit -k start

32bitだとこう

webservd  2083  2075   0   02:09:53 ?           0:00 /usr/apache2/2.2/bin/httpd -k start
    root  2075 28381   0   02:09:52 ?           0:00 /usr/apache2/2.2/bin/httpd -k start
webservd  2080  2075   0   02:09:53 ?           0:00 /usr/apache2/2.2/bin/httpd -k start
webservd  2079  2075   0   02:09:53 ?           0:00 /usr/apache2/2.2/bin/httpd -k start
webservd  2082  2075   0   02:09:53 ?           0:00 /usr/apache2/2.2/bin/httpd -k start
webservd  2078  2075   0   02:09:53 ?           0:00 /usr/apache2/2.2/bin/httpd -k start
webservd  2081  2075   0   02:09:53 ?           0:00 /usr/apache2/2.2/bin/httpd -k start

64bit版Apacheのメリット・デメリット

メリット

  • OS自体は64bitなので、SYSCALLの関係で速度的には少し速いかも・・・
    • ベンチマークに現れる程度かはわからない。CPUのusageが関係するかも知れないけど不明
    • CPUの命令セット的には64bitの方が有利だしレジスタも多い。しかしワークさせるメモリ単位がで大きくなるのでどうなるかわからない。
  • 大きいメモリが使えるようになる
    • preforkの時にApache2GBを超えることはそんなにはない(っていうかあったら絶望的に重いサーバ)とおもうので、workerでの共有メモリに差が出ることになると考えられる。mod_cache_memとか。

デメリット

  • 使用するメモリが若干増える
    • preforkでのworksetの増加サイズは13MB〜16MB(1インスタンスあたり)なので、100個のhttpdがいたら300MB程度の差がでる。
  • 一部動かないモジュールがある
    • conf.d/modules-32とmodules-64で動作モードを切り替えているが、ここでの行数は変わらない。
    • ただし、それぞれのconf内で、ifmoduleをみて64bitかどうか、かえているものがあります。

どちらを選ぶべきか

Solarisのmod_phpは32bit/preforkでしか動かないため、phpをpreforkで動かす必要がある場合は、32bitしかないでしょう。

実は64bit、workerにしても、phpを動くのですが、FastCGIになるため、メモリ効率は良くなるものの、動きに癖が出ます。この癖に対応できるなら問題はありませんが、対応できないなら32bitでしょう。

しかしそれ以外ではほとんど困らないので64bitにしても良いかなぁとは考えています。