デフォルトのビジー関数は「503 Service Unavailable」応答を返し、ログレベルの設定に応じたメッセージをログに記録します。アプリケーション向けにこの動作を変更することをお勧めします。obj.conf ファイル内の任意の NSAPI 関数でユーザー独自のビジー関数を指定するには、その構成ファイル内でサービス関数を次の形式で含めます。
busy="my-busy-function"
たとえば、次のサンプルサービス関数を使用できます。
Service fn="send-cgi" busy="service-toobusy"
これにより、いくつかのタイプ (Service、AddLog、PathCheck など) を含む要求処理の途中でサーバーが深刻なビジー状態に陥った場合に、さまざまな応答を返すことが可能となります。デフォルトのスレッドタイプが非ネイティブである場合、実行にネイティブスレッドを必要とするすべての関数にビジー関数が適用されます。
サーバー全体で、デフォルトのビジー関数の代わりにユーザー独自のビジー関数を使用するには、次のような、func_insert 呼び出しを含む NSAPI init 関数を記述します。
extern "C" NSAPI_PUBLIC int my_custom_busy_function (pblock *pb, Session *sn, Request *rq); my_init(pblock *pb, Session *, Request *){func_insert ("service-toobusy", my_custom_busy_function);}
プールスレッド上では、ビジー関数が実行されることは決してないため、スレッドのブロックを引き起こす可能性のある関数呼び出しを使用しないように注意する必要があります。