Manual:Maxlag parameter/ja

(Wikimediaのように)複製データベースクラスター上でMediaWikiを稼働させている場合、高い編集率によってスレイブサーバが遅延することがあります. スレーブの遅延を和らげる一つの方法は遅延がある値を超えたときはすべてのボットとメンテナンスタスクを自動的に停止させることです. MediaWiki 1.10において、導入されたmaxlagパラメーターはクライアントサイドで同じことを行うことを可能にします. In 1.27, it was updated to only work for  requests.

The maxlag parameter can be passed to api.php through a URL parameter or POST data. It is an integer number of seconds. For example, [/w/api.php?action=query&titles=MediaWiki&format=json&maxlag=1 this link] shows metadata about the page "MediaWiki" unless the lag is greater than 1 second while [/w/api.php?action=query&titles=MediaWiki&format=json&maxlag=-1 this one] (with -1 at the end) shows you the actual lag without metadata.

If the specified lag is exceeded at the time of the request, a 503 status code is returned (or 200 during API requests, see T33156), with a response body with the following format:

次のようなHTTPヘッダーが設定されます:


 * Retry-After: 再試行をする前にクライアントが待つ推奨の最小秒数.
 * X-Database-Lag: もっとも遅延したスレーブの遅延秒数

Wikimediaのwiki群に対する推奨される使い方は次の通りです:


 * Use maxlag=5 (5 seconds). This is an appropriate non-aggressive value, set as default value on Pywikibot. Higher values mean more aggressive behaviour, lower values are nicer.
 * 遅延エラーを受け取る場合、再び試す前に少なくとも5秒間はスクリプトを停止させて下さい. ビジーループに陥らないように注意して下さい.
 * この値によって、データベースの負荷が高いときに低いデューティサイクルを得る可能性があります. それはOKで、負荷が高い状態が終わるのを待ってください. 編集を拒否することで利用者の時間を無駄にしたくないため、負荷が高いときは人間を優先します.
 * 普通ではない高いもしくは持続する遅延はirc.freenode.net上のに報告されます.

Note that the caching layer (Varnish or squid) may also generate error messages with a 503 status code, due to timeout of an upstream server. Clients should treat these errors differently, because they may occur consistently when you try to perform a long-running expensive operation. Repeating the operation on timeout would use excessive server resources and may leave your client in an infinite loop. You can distinguish between cache-layer errors and MediaWiki lag conditions using any of the following:


 * X-Database-Lag header is distinctive to slave lag errors in MediaWiki
 * No Retry-After in Varnish errors
 * X-Squid-Errorヘッダーはsquidエラーで表示されます
 * スレーブ遅延エラーでのリスポンスボディは正規表現の  にマッチします

テストの目的のために、負の値を渡すことで故意にソフトウェアにリクエストを拒否さ競ることが出来ます. 例えば次のURLです: [/w/api.php?action=query&titles=MediaWiki&format=json&maxlag=-1]

The maxlag parameter is checked in Wiki.php, and also applies to the action API.