[Apache] php-fpmのステータスページを表示する

PHP-FPMを稼働させている場合には、PHP-FPMの統計情報を表示することができる。

ステータスページを表示
http://example.com/fpm-status

参考サイト

PHP-FPM と nginxのステータスページを見られるようにする – koni blog
https://koni.hateblo.jp/entry/2016/01/12/184800

PHP-FPM status page » Malasuk
https://www.malasuk.com/linux/php-fpm-status-page/

Nginx – Enable PHP-FPM Status Page
https://easyengine.io/tutorials/php/fpm-status-page

[Apache] サーバーステータスページを表示する

mod_status によりサーバーの統計情報を表示することができる。設定は簡単。

ステータスページを表示
http://example.com/server-status

ステータスページを自動更新(1秒おき)
http://example.com/server-status?refresh=1

参考サイト

mod_status – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mod/mod_status.html

2.7 サーバステータスの監視機能
http://software.fujitsu.com/jp/manual/manualfiles/M060041/B1WN7141/02Z200/ihs02/ihs00014.htm

稼働状況の表示(ステータス情報表示)
http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0950/03Y1830D/EY180051.HTM

[Webサイト運営] ロードアベレージとは

  • システム全体の実行待ちプロセス数の平均値(負荷状況)
  • 「1CPUにおける単位時間あたりの実行待ちとディスクI/O待ちのプロセスの数」
  • つまり「CPUの実行権限が与えられるのを待っているプロセス」と「ディスクI/Oの完了を待っているプロセス」の多さ
  • ロードアベレージはあくまで待ちタスク数を表すだけの数字
  • 故にロードアベレージだけではCPU負荷が高いのかI/O負荷が高いのか判断はできない

参考サイト

LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる – Qiita
https://qiita.com/kunihirotanaka/items/21194f77713aa0663e3b

ロードアベレージを確認できる4つのコマンドと4つの原因の対処方法|フリエン
https://furien.jp/columns/146/

load averageを見てシステムの負荷を確認する – Qiita
https://qiita.com/k0kubun/items/8065f5cf2da7605c8043

[Unix] top – 実行中のプロセスをリアルタイムで表示する

まずは –help で指定可能なオプションを確認するも簡素な表示。

オプション無しで現在実行中のプロセスを表示する。画面の高さに収まる分だけ。表示はCPU利用率(%CPU)が高い順、3秒ごとに更新される。qで終了、?でヘルプ画面に切り替わる。

1行目にロードアベレージが表示されている。

左から直近1分、5分、15分のロードアベレージを示す。

参考サイト

Man page of TOP
https://linuxjm.osdn.jp/html/procps/man1/top.1.html

【 top 】コマンド――実行中のプロセスをリアルタイムで表示する:Linux基本コマンドTips(123) – @IT
https://www.atmarkit.co.jp/ait/articles/1706/30/news018.html

topコマンドで覚えておきたい使い方14個 | 俺的備忘録 〜なんかいろいろ〜
https://orebibou.com/2015/07/top%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E4%BD%BF%E3%81%84%E6%96%B914%E5%80%8B/

topコマンドの使い方 – Qiita
https://qiita.com/k0kubun/items/7368c323d90f24a00c2f

[Unix] vmstat – 仮想メモリやディスクI/Oの統計情報を表示する

まずは –help で指定可能なオプションを確認。

表示されるのは、最後に起動(再起動)した時から現在までの統計情報。

-a オプションでアクティブ/非アクティブなメモリの量を表示する。

  • procs
    r – 実行中と実行待ち中のプロセス数の合計
    b – 割り込み不可能なスリープ状態にあるプロセス数
  • memory
    swpd – 使用中の仮想メモリの量
    free – 空きメモリの量
    buff – バッファとして使用しているメモリの量
    cache – キャッシュに使用している量
    inact – アクティブではないメモリの量
    active – アクティブなメモリの量
  • swap
    si – ディスクからスワップインしているメモリの量
    so – スワップアウトしている量
  • io
    bi – HDDのようなブロック型デバイスから受け取ったブロック数
    bo – ブロック型デバイスに送ったブロック数
  • system
    in – 1秒当たりの割り込み回数
    cs – コンテクストスイッチの回数
  • cpu
    us – カーネルコード以外の実行(ユーザー時間)に使用した時間(ユーザー時間)
    sy – カーネルコードの実行に使用した時間(システム時間)
    id – 空転していたアイドル時間
    wa – I/O待ち時間
    st – 仮想環境で実行している際、ホストOSにCPUリソースを割当ててもらえなかった時間の割合

-s オプションで1項目1行でメモリの統計情報とイベントカウンタを表示する。

-dオプションでディスクの統計情報を表示する。

-Dオプションでディスクの統計情報を1項目1行で表示す

繰り返し表示したければ間隔(秒)と回数を指定する。

参考サイト

【 vmstat 】コマンド――仮想メモリやディスクI/Oの統計情報を表示する:Linux基本コマンドTips(126) – @IT
https://www.atmarkit.co.jp/ait/articles/1707/13/news015.html

vmstatの見方と考え方:ぴろにっき:So-netブログ
https://piro791.blog.so-net.ne.jp/2008-10-02

[Unix] free – メモリの利用状況を表示する

まずは –help で指定可能なオプションを確認。

オプションを何も指定しなければKB単位で表示されるみたい。

-h オプションで人間が読みやすい単位にしてくれる。

繰り返し表示したければ -s で間隔(秒)と -c で回数を指定する。

カラムの意味

参考サイトより:

Mem – ページキャッシュとバッファキャッシュを考慮しないメモリサイズ

  • total – OSが認識している物理的なメモリサイズ。RAIDカードやNICなどを装着しているときは、それらのためにメモリが使われるので実際の搭載メモリサイズよりも少なくなります。
  • used – 使用しているメモリサイズ。これにはバッファキャッシュやページキャッシュなどOSがディスクキャッシュのために使用しているメモリも含まれます。
  • free – 空きメモリサイズ。この値にはバッファキャッシュとページキャッシュが含まれていません。一般にLinuxは使い続けるほど、メモリをキャッシュに割り当てます。そのため使い続けるほどfreeの値はゼロに近づきます。この値が少ないからといって空きメモリがないわけではないことに注意してください。
  • shared – 共有メモリに割り当てられたメモリ。
  • buffers – バッファキャッシュに割り当てたメモリ。バッファキャッシュはブロックデバイス用のキャッシュです。
  • cached – ページキャッシュに割り当てたメモリ。ページキャッシュはファイルに対するキャッシュです。

-/+buffers/cache – ページキャッシュとバッファキャッシュを考慮したメモリサイズ

  • used – 1行目のusedからページキャッシュとバッファキャッシュを引いた値。OSとアプリケーションが純粋に使用しているメモリサイズを表します。
  • free – 1行目のfreeにページキャッシュとバッファキャッシュを足した値。キャッシュに割り当てられているメモリを自由に割り当て可能なメモリと考えれば、この値が空きメモリサイズになります。

Swap – スワップに割り当てたサイズ。

  • total – スワップに割り当てたディスクサイズ。
  • used – 割り当てた中で使用中のサイズ。
  • free – 割り当てた中で使用していないサイズ。

参考サイト

【 free 】コマンド――メモリの利用状況を表示する:Linux基本コマンドTips(125) – @IT
https://www.atmarkit.co.jp/ait/articles/1707/07/news014.html

freeコマンドで確認するOSのメモリ情報 – SHOYAN BLOG
http://48n.jp/blog/2016/05/08/learn-the-memory-with-free-command/

4.メモリ使用率(第5章 パフォーマンス管理~上級:基本管理コースII)
https://users.miraclelinux.com/technet/document/linux/training/2_5_4.html

[Unix] ps – 実行中のプロセスを一覧表示する

よく使う割に使いこなせていないので再勉強。

まずは –help で指定可能なオプションを確認。

自分のプロセスを表示する。

l オプションを付けるとロング形式で表示される。

良く使われるのは aux オプション。全ユーザが実行しているプロセスを表示する。

  • a – 端末を持つ全てのプロセスを表示する
  • x – 端末を持たない全てのプロセスを表示する
  • u – ユーザー指向のフォーマット(読みやすさ優先)で表示する

-L オプションを指定すればスレッドを表示できる。

grepで絞る代わりに -C オプションでコマンド指定すればヘッダが表示できる。

カラムの意味

  • F – プロセスの状態(16進表記)
    00- 終了
    01 – システム上の常駐プロセス
    02 – 親プロセスからトレースされている
    04 – 親プロセスからトレースされている状態で停止している
    08 – 起動不可能
    10 – プロセスがメモリ上にありイベント終了までロックされている
    20- スワップ不可能
  • PID – プロセスのID番号
  • PPID – 親プロセスのID番号
  • S – プロセスの状態表示
  • STAT – 複数文字によるプロセスの状態表示
    ▼1文字目
    R – 実行中/実行可能な状態
    S – スリープ状態
    D – スリープ状態(割り込み不可) (ディスク待ちが多い)
    T – 停止またはトレース中(シェルでCtrl+Zキーで停止している時など)
    Z – ゾンビプロセス(終了しているのにメモリに残ってしまっているプロセス)
    ▼2文字目以降
    + – フォアグラウンドのプロセスグループ
    s – セッションリーダー
    < – 優先度が高いプロセス
    N – 優先度が低いプロセス
    l – マルチスレッドのプロセス
  • %CPU – CPUの使用率 (CPU利用時間/実際の時間)
  • %MEM – メモリの使用量 (プロセスが確保している物理メモリを百分率で表示)
  • VSZ(Virtual Set Size) – プロセスが確保した仮想メモリ領域のサイズ (KB)
  • RSS(Resident Set Size) – プロセスが確保した物理メモリ領域のサイズ (KB)
  • TIME – CPUの累積使用時間
  • STARTED – コマンドが起動した時刻
  • NI – nice値(プロセスの優先順位)範囲は-20~19で、19が優先度が一番高い
  • COMMAND – コマンド名
  • TT – 制御端末(tty)
  • UID – 実効ユーザーのID番号
  • USER – 実効ユーザーの名前
  • GID – 実効グループのID番号
  • GROUP – 実効グループの名前
  • LWP – 軽量プロセスもしくはスレッドのID
  • NLWP – 総スレッド数

参考サイト

Man page of PS
http://linuxjm.osdn.jp/html/procps/man1/ps.1.html

【 ps 】コマンド――実行中のプロセスを一覧表示する:Linux基本コマンドTips(6) – @IT
https://www.atmarkit.co.jp/ait/articles/1603/28/news022.html

psコマンドで表示される内容について調べた – Qiita
https://qiita.com/toshihirock/items/565fe71d778d3ee36b96

psコマンドまとめ – Qiita
https://qiita.com/shell/items/68ed71a7f018e5688f73

psコマンドでスレッドを表示させたり、スレッドごとのCPU使用率を確認する – 元RX-7乗りの適当な日々
https://www.na3.jp/entry/20101219/p1

30 Useful ‘ps Command’ Examples for Linux Process Monitoring
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/

[Unix] pstree – プロセスの親子関係をわかりやすく表示する

インストール (CentOS 7)

psmiscというパッケージに含まれているらしい。

インストールする。

使い方

全プロセス(プロセスID1を先祖に持つプロセス)をツリー形式で表示する。子プロセスが複数存在する場合は、7*といったように冒頭にその個数が表示される。画面に収まり切れない場合はmoreでつなぐと良い。

-p オプションを指定するとプロセスIDも表示される。

プロセスIDを指定すると、そのプロセスを親に持つプロセスだけを表示できる。

参考サイト

【 pstree 】コマンド――プロセスの親子関係を分かりやすく表示する:Linux基本コマンドTips(7) – @IT
https://www.atmarkit.co.jp/ait/articles/1603/29/news024.html

CentOS7を最小インストールしたらpstreeがなかった – Qiita
https://qiita.com/nekootoko3/items/b9159d13cd4d3e689aca

[Apache] 特定のURLにBasic認証をかける

LocationやLocationMatchは.htaccessには使えない。

参考サイト

.htaccess の書き方(アクセス制御編) – Qiita
https://qiita.com/shotets/items/17bed9029140a6d925d2

[Apache] event MPMはSSLではworker MPMになるのか

スタンフォード大学のApache 2.4ドキュメントにそういった記載がある。更新日時は書かれていないが、フッタの著作権表記は2012年と古い。

event – Apache HTTP Server
http://webauth.stanford.edu/manual/mod/event.html

How it Works
The improved connection handling does not yet work for certain connection filters, in particular SSL. For SSL connections, this MPM will fall back to the behaviour of the worker MPM and reserve one worker thread per connection.

本家ドキュメントに当たってみる。該当ページには明確に「SSLでは」と書かれていないものの、同じような表記がある。「eventと互換性が無いと謳っている特定のコネクションフィルターに関しては」といった言い回しだけど。こちらも更新日時は見当たらないが、フッタの著作権表記は2019年と新しい。

event – Apache HTTP Server Version 2.4
https://httpd.apache.org/docs/2.4/mod/event.html

Limitations
The improved connection handling may not work for certain connection filters that have declared themselves as incompatible with event. In these cases, this MPM will fall back to the behavior of the worker MPM and reserve one worker thread per connection. All modules shipped with the server are compatible with the event MPM.

日本語のブログ記事に同じような記述があった。しかし、この記事も作成日付は2013年と古い。

Apache2.4新機能 ~MPMのevent~ その2 | しんじつのなみだ
http://apache24.jugem.jp/?eid=6

mod_eventの制約
ただし、mod_eventのこのkeepaliveの恩恵を受けられるのはHTTP通信の時だけです。
SSL通信を行う場合は、worker坂と同じになります。すなわちHTTPSとしてApacheをサービス提供するときは、mod_eventを使ってもkeepaliveの待ち時間は他の人からのリクエストを処理できません。

はっきりしたことは自分で調べるしかないのか。