Old/Zend Server/IBMi
Zend Server for IBM i:: エラーログやメッセージに関する FAQ
- この情報の対象は、Zend Server for IBMi の下記のバージョンです。
- Ver 5.0.1 日本語版
- Ver 5.1.0 日本語版
- 下記のバージョンは対象外です
- Ver 5.1.1 以降のすべて
- Ver 5.1.0 以前の 英語版 のすべて
IBM HTTP Server のメッセージと対策
下記のようなメッセージが /www/zendsvr/logs/error_log.(システム生成の文字列) に出力されることがあります。
- 正常なメッセージの例
- IHS 起動時に出力されます。
- [notice] Using [Zend Enabler module, Version(以下略)
- [notice] ZSRV_MSG0385: Apache(以下略)
- IHS 終了時に出力されます。
- [notice] ZSRV_MSG0387: SIGTERM の受信。 シャットダウン中。
- 実は正常なメッセージの例
これらは、結果的にエラーとして記録されたメッセージです。
- もともと存在しない favicon ファイルをブラウザが表示しようとしたため発生。
アイコンファイルや favicon ファイルを表示しないようにブラウザを設定すると、結果的にこのメッセージは減ります
設定できるかどうかはブラウザの種類に依存します。
- [error] ZSRV_MSG0018: ファイル /www/zendsvr/htdocs/favicon.ico が存在していません
- [error] ZSRV_MSG0016: 要求 GET /favicon.ico HTTP/1.1 の URI が正しくありません
- index.html または index.php が存在しないディレクトリーをブラウザで表示しようとしたため発生。
- [error] ZSRV_MSG0356: mod_autoindex: 規則によって禁止されているディレクトリー索引(以下略)
- 異常なメッセージの例
- [warn] Cannot send HTTP response errno=0
- [warn] Cannot send HTTP response errno=3455
- [error] Can not connect() to /usr/local/zendsvr/bin/php-cgi.bin (0.0) - [3425]
- [error] Can not send request to /usr/local/zendsvr/bin/php-cgi.bin (0.0) - [3426]
- [error] Can not read response from /usr/local/zendsvr/bin/php-cgi.bin (0.0) - [3447]
異常なメッセージが発生する場合、IBM Fix Central を下記のテキストで検索してください。
検索結果のうち、ログファイルに関連する PTF 番号を適用してください。
2012/8/7 時点では、下記の PTF が利用できます。
- 内部ライセンスコード
- V5R4M0 : MF53779
- V5R4M5 : MF53780
- V6R1M0 : MF53775
- V6R1M1 : MF53781
- V7R1M0 : MF53782
- Portable App Solutions Environment関連
- V5R4M0 : SI43793 (SI36004 は置換されます)
- V6R1M0 : SI43795 (SI36005 は置換されます)
- V7R1M0 : SI43798
- IBM HTTP Server for i(IHSの正式名称)関連
- V5R4M0 : SI43221 (SI36026 は置換されます)
- V6R1M0 : SI43224 (SI36027 は置換されます)
- V7R1M0 : SI43222 (SI37065 は置換されます)
PTF を適用しても解決しない場合、error_log.(システム生成の文字列) に対応する access_log にヒントが見つかる場合があります。
- error_log 内で下記が発生する時刻を秒単位で調べます。
- [error] Can not send request to /usr/local/zendsvr/bin/php-cgi.bin (0.0) - [3426]
- [error] Can not read response from /usr/local/zendsvr/bin/php-cgi.bin (0.0) - [3447]
- それぞれの発生時刻から一定時間以内に下記の3桁のコードが access_log に出現しているか調べます。
さかのぼる範囲はほとんどの場合1分以内です。
HTTP/1.1 の直後に引用符がはさまる場合もあります。
- HTTP/1.1 4xx (xx は任意の数字)
- HTTP/1.1 5xx
- 特定のコードが、特定の PHP スクリプトで集中して発生している場合、その PHP スクリプトを調査します。
- 調査すべき内容は、この3桁の HTTP ステータス・コードに依存します。
各コードの意味については、例えばStudying HTTP などで説明が見つかります。
スプールや MSGQ に見つかる、EASYCOM が Unregistered copy だというメッセージが気になります。
これはエラーではなく、AURA社が配布する PHP Toolkit For IBM i による通知メッセージです。
Toolkit For IBM i は Zend Server for IBM i で同梱されている i5関数部分です。
ユーザー登録(www.easycom-aura.com/en/registration_php.asp)により
Unregistered な状態を解除することができました。(少なくとも 2012年春ごろまで)
- 少なくとも 2012/11/30 には上記のアドレスは削除されています。
- 新しいアドレスにユーザー登録が移転したようですが、2013/04 現在、Ver 5.1 用のライセンスを入手不能との情報が入っております。
そのため新しいアドレスのご案内は控えさせていただきます。
また、ユーザー登録の代行作業はお受けいたしかねます。
- 下記の情報については、2012年前半に確認した内容となります。
2013 年以降については、下記が参考になることを保証いたしかねます。
必須ではありませんので、
絶対に気になる場合のみユーザー登録されるとよいでしょう。
いくつかの入力欄について説明を記載します。
- Title: Mr(男性)/Ms(未婚女性)/Mrs(既婚女性)
- First name: 姓名のうち、名の部分です。
- Last name: 姓名のうち、姓の部分です。
- Phone: +81-3-1111-2222 のように国番号から書きます。次に市外局番と電話番号を続けます。市外局番の最初のゼロは取ります。
- State: 入力は不要です。アメリカなど州に分かれている国で使います。
- Fax: Phone と同じ要領です。
ドキュメントルートに追加したディレクトリにアクセスすると禁止と表示されます
下記の2点を確認してください。
- 追加したディレクトリに対して、IHS既定のユーザーによる読み取りと実行が可能であること。(書き込み権限は任意です)
- index.html または index.php が存在すること。
このファイル名は /www/zendsvr/conf/httpd.conf の DirectoryIndex ディレクティブの値として指定されています。
しばらくすると、php のエラーログに Too many open files が出力されます
i5_connect 関数の内部で、コードページファイルの処理が正しく行われていない可能性があります。
このメッセージが発生した PHP スクリプトの行を調べても解決が難しい種類のメッセージです。
2012年10月末時点で考えられる対応を列挙します
- i5_connect 関数の代わりに i5_pconnect 関数を利用
- i5_connect または i5_pconnect 関数で I5_OPTIONS_CODEPAGEFILE を指定すると、関数が呼ばれると、関数内部ではコードページファイルを開く処理が行われていると推測されます。
i5_connect 関数では、呼ばれるたびに毎回開かれていると推測されますが、
i5_pconnect 関数では、既存の接続を再利用できない場合にのみ、コードページファイルを開く処理が行われていると推測されます。
過去の事例では、約 2000 回実行後に異常が発生するロジックで i5_connect 使用箇所を i5_pconnect に置き換えたところ、60000回の実行にも耐えられた例がございます。
なお、試験時間の都合で60000回を上限に設定したため、最大値は未確認です。
1秒に1回実行される処理の場合、これは 16時間分になります。
- i5_connect の回数を減らす
- 1番目と似ていますが、同じプログラム内で i5_connect と i5_close を繰返すプログラムの場合、
最初に1回のみ接続し、プログラムを抜ける(例えば exit )直前のみ i5_close を使うようにします
- データベース関係の処理で i5 関数を使用している場合、db2 関数に置き換えます
- コードページファイルを使わない
- 日本語の引数を渡したり、受け取る必要がないプログラムの場合には、i5_connect 関数にコードページファイルを指定しないようにします。
- PASE Loader 関係の PTF
- PASE 環境内でのファイルのオープン・クローズ処理の円滑さや処理速度に起因する場合、
PASE Loader 関係の PTF にて改善する可能性があります。
2012/12/12 時点では、下記の PTF が利用できます。
- V5R4M0 : MF44865
- V5R4M5 : MF44881
- V6R1M0 : MF46839
- ファイルディスクリプタ数上限値を変更
- 開かれたファイルを管理する OS 側の設定値の上限を増やすことができれば、問題がおきるまでの時間を延長できる可能性があります。
- Linux の場合は ulimit -n コマンドに該当します。
- 待機状態の TCP/IP 接続を制限する
- TCP/IP 接続などが待機状態のまま残り、ファイルが大量につかまれている可能性があります。
なお、この現象が本当に発生しているかどうか確認するには、Linux の場合ですと lsof コマンドを実行します。
2012年10月末時点で考えられる手段としてはhttp.conf の Timeout を小さくします。
Ver 5.1.0 の場合で既定値は 30000 秒 (500 分)ですが、これを短縮して待機状態を早く終わらせます。