FreeBSDのnginxでFCGIスポーンアプリを実行しています。バグがあり、クラッシュの.coreファイルを分析したいと思います。しかし、私はそれがどこで生成されたのか見当がつかない。誰か知っている?
私は自分で問題を解決する方法を考え出しました。
なぜこれが必要なのかわかりませんが、バイナリファイルの所有者をrootからspawn-fcgiであるユーザーに変更する必要がありました。そして今、それはコアファイルを生成します。
まず、nginxを--with-debugconfigureオプションでコンパイルする必要があります。 freebsdポートを使用している場合は、次のようなものを追加します。
CONFIGURE_ARGS+= --with-debug
NginxのportsディレクトリのMakefileへ。
次に、nginx.confで
worker_rlimit_core 2048M;
working_directory /path/to/cores/;
nginx.confで
および/etc/sysctl.conf内
kern.coredump=1
kern.corefile=/path/to/cores
(または「systctl-w kern-.coredump = 1; sysctl kern.corefile =/path/to/cores」)
また、/ etc/login.confに、nginxが実行するユーザーのコアを生成するための適切な権限があることを確認してください(通常は:coredumpsize = unlimited:ですが、これを制限することもできます)。 /etc/master.passwdで明示的に指定されていない限り、nginxユーザーは「デフォルト」のログインクラスで実行されます。