質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1896閲覧

apacheのエラーログに「No space left on device: Couldn't create accept lock 」という文字が出力されていました。

sho1990

総合スコア23

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2014/05/17 03:37

LAMP環境でWEBサーバを運用しています。

そこで、Apacheを再起動させる必要がありgracefulをかけたところ、起動に失敗しました。
エラーログには以下のようなメッセージが出力されていました。

「No space left on device: Couldn't create accept lock 」

エラーレベルはemergでした。
一体これは何が原因なのでしょうか?
再起動させるにはどのような対応をすればよいのでしょうか。
困っております。

どなたかご教授いただけますようよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そのエラーはおそらく、セマフォが限界値に達してしまったために新しいセマフォを使ってアプリケーショ****ンを起動することができなくなってしまったというものだと思われます。

まずは、以下のコマンドを実行してセマフォを使っているユーザ名にapacheの起動ユーザ名がどれくらいあるか数えてみてください。
それが以下の設定ファイルに書かれている限界値と同じであればそれが原因となります。

`

ipcs -s

------ セマフォ配列 --------
キー semid 所有者 権限 nsems
0x000000a7 0 root 600 1
0x00000000 98305 apache 600 1
0x00000000 131074 apache 600 1

/sbin/sysctl -a | grep sem

kernel.sem = 250 32000 32 128
`
※セマフォの限界値が128個であることを意味します。

これを解決する方法は2通り考えられます。

一つ目は、不要と思われるセマフォを使っているアプリケーションのプロセスをKILLする。
もう一つは、セマフォの限界値を引き上げてさらに使えるようにする、方法です。
どちらも一長一短ですが場面に応じて使い分けてみてください。
以下に、両者の手順を示しておきます。

`
==== ここから(1つ目) ====

ipcrm -m (ID) ←1個ずつ削除する場合のコマンドです

for i in ipcs -s | awk '/apache/ {print $2}'; do (ipcrm -s $i); done ←apacheという文字列のあるプロセスをすべて削除する場合のコマンドです

==== ここまで(1つ目) ====
`

`
==== ここから(2つ目) ====

vi /etc/sysctl.conf

・・・(省略)
kernel.sem = 250 256000 32 1024 ←この1行を最後行に追加します

/sbin/sysctl -p

/sbin/sysctl -a | grep sem

kernel.sem = 250 256000 32 1024 ←反映されていることを確認します
==== ここまで(2つ目) ====
`

※参考
そもそも、セマフォがたまる原因ですが、apacheの再起動時にプロセスが正常にkillされなかった状態で再起動(graceful)を実行すると起きることがあります。

以下のコマンドで再現性を確認してみてください。

`

apacheを起動

kill -9 [apacheの親プロセスID]

kill -9 [apacheの子プロセスID]※子プロセスをすべてkillする。

apacheを再起動(graceful

`

投稿2014/06/03 03:01

whiskey235

総合スコア169

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問