トップページphp
109コメント26KB

CGI暴走はどういう時に起きるのですか?

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/23 02:25ID:Xiqwo/AJ
よくCGIは暴走したら大変だから
必ずローカル環境で確かめてましょうなどと言われますが
未だにテストしていて暴走など起きたことありません。
そもそも本当に暴走によるサーバダウンなんて起きるのでしょうか?

とりあえず「whileなどに因る無限ループ」というのは聞きますが
逆に言えば原因としてこれしか聞いたことないです。
じゃあこれさえ気をつければOKでしょうか???
0002nobodyさん03/06/23 02:34ID:sxlYymea
( ´_ゝ`)2getしておくか
0003nobodyさん03/06/23 02:56ID:???
( ´_ゝ`)2getでいいや
0004nobodyさん03/06/23 03:17ID:???
もういいよ。
0005nobodyさん03/06/23 04:44ID:???
配列に巨大な添字を指定、とか。
ローカルで、配列に間違えてハッシュのリファレンスを指定したらフリーズした。
(^Cで停止はできるけど)
0006nobodyさん03/06/23 04:59ID:???
糞スレ立てるような自信過剰な奴が共用サーバを借りたときに起きます
0007マリモーマ ◆vx6KgJyjvE 03/06/24 01:00ID:Pfw3AN7S
while(1) {
}
0008nobodyさん03/06/24 01:31ID:???
>>7
お前も>>1と同じレベルか
0009nobodyさん03/06/24 01:58ID:???
>>1
CGIだからです。
OSにたとえると、Win9x系のレベルだからです。
0010nobodyさん03/06/24 06:20ID:rXGYkm8s
糞スレ立てんな。ヴォケが!
0011あぼーんNGNG
あぼーん
0012nobodyさん03/06/24 11:13ID:???
たかが1人のユーザのページが暴走したぐらいで落ちる
ような鯖は管理が甘いんじゃないのか?
一定割合以上CPUが使えないようにするとか、ある転送量
以上になるとサービスが停止するとか、あらかじめ規制し
とけば、暴走CGIを実行されてもそいつのサイトが落ちる
だけで、鯖自体は痛くも痒くもないだろう。
そんな甘い鯖なら、中には意図的に暴走するようにして
鯖を落とそうとするやつもいるだろうし、鍵のない家に
住んでて泥棒に入られたというような話やね。
0013あぼーんNGNG
あぼーん
0014nobodyさん03/06/24 11:21ID:Rw67+3aY
>>1
両親が共働きだと暴走し始めます。
0015nobodyさん03/06/24 11:22ID:???
(^∀^)ゲラゲラ
0016nobodyさん03/06/24 15:26ID:???
>>12
に通じるけど、そもそも、タイムアウトしないの?
0017nobodyさん03/06/24 15:52ID:???
>>12は何か勘違いしてるからほっとけ
0018nobodyさん03/06/24 16:52ID:01cZwzPj
マジレスすると、

#!/usr/bin/perl
fork while 1;
__END__

この程度でダメージ喰らうサーバーは結構ある。
0019nobodyさん03/06/24 17:33ID:???
>>16
俺もそれ不思議。
perl使ったことないから知らんのよ。
0020本7 ◆uPD9aFm9hI 03/06/24 17:45ID:NRot/Ugh
メモリ管理が甘いと落ちる。
00211903/06/24 18:09ID:???
>20
落ちるってhttpdが無限ループで何しても反応しなくなるってこと?
で、http全体を巻き込んで落ちるの?
それともOSが落ちるの?<そんなことないよね??
0022nobodyさん03/06/24 18:24ID:???
>>21
昔のパソコンならありそうだけど、ふつうサーバー用OSでは
httpdが落ちたりOSが落ちたりはまずありえない。

で、Cなんかで書かれた物でメモリ管理が間違ってる(甘い以前の問題)
物はよくCore吐いてプロセスが落ちたりするけど、
Perlだとメモリ管理自体をperlが行うから相当雑なスクリプティングでも
プロセスが落ちるところまでは滅多に行かない。

#!/usr/bin/perl
$a .= "0123456789abcdef" x 65536 while 1;

まぁこのくらいやっとけば起動後しばらくして使用可能なメモリ使い切って
プロセス自体は落ちると思うけど、サーバーには影響ないと思われる。
0023本7 ◆uPD9aFm9hI 03/06/24 18:36ID:???
まずPerl自体がメモリ管理というかOSとの連携が甘いと思う。
HTTPDですぐに幽霊プロスセ作るバカチン(このスレの傾向だとANとかが多
い)だとどんどん未解放領域が増えてしまいにHttpdに泣きつく。
で、自分だけでも手一杯なHttpdはOS叩いて共倒れ。
Winだとまずデスクトップ画像が更新されなくなる(メッセージの不通達)から
Explorerが落ちる。次にPerlが落ちる。で、Httpdがメモリアドレス違反〜がで
て鯖が死ぬ。

とにかくPerlのメモリ管理を意識してやる事かな。俺はPHPに乗り換えてましに
なったけど
0024nobodyさん03/06/24 18:41ID:???
>>23
なんか・・・・すごく適当なことをいい加減に書いてないか?
0025nobodyさん03/06/24 18:45ID:???
>>24
レスしちゃ駄目です。NGワードにしてください。荒しなので
0026本7 ◆uPD9aFm9hI 03/06/24 18:47ID:???
実際によく起こってた鯖落ちの経過なんだが
0027nobodyさん03/06/24 19:11ID:???
>>25
なるほど。了解です。
0028本7 ◆uPD9aFm9hI 03/06/24 19:53ID:???
粘着自演のオンパレードだな
0029あぼーんNGNG
あぼーん
0030あぼーんNGNG
あぼーん
0031あぼーんNGNG
あぼーん
0032nobodyさん03/06/25 16:30ID:kbF34G9I
あっ私も、1と同じ事を聞きたかったです。
改造のプロの私には、CGIの暴走の
意味が分かりません。
0033nobodyさん03/06/25 16:37ID:???
>>1
>>32
仕事で8年CGIスクリプトを書いてるけど、ローカルでテストなんかしたことないです。
都市伝説みたいなもんでしょう。

> 暴走によるサーバダウンなんて起きるのでしょうか?

サーバーがsystem7とかWindows95とかだったらあるかも知れない。
0034あぼーんNGNG
あぼーん
0035nobodyさん03/06/25 17:05ID:???
ダウンしなくても過負荷によるアカウント停止ってのはあるわな
0036nobodyさん03/06/25 18:24ID:MeoOZKwq
fcgi使ってみる。
0037あぼーんNGNG
あぼーん
0038nobodyさん03/06/25 20:37ID:f3Z/hiNx
無限ループを解除・防止できる方法ってありますか?
0039nobodyさん03/06/25 20:45ID:???
kill -TERM pid
0040nobodyさん03/06/25 21:11ID:???
>>38
httpdやOS側で実行時間に制限をかける。
無限ループが起きそうな場所の前後でalarm()を呼ぶ。

>>39
スクリプト側でハンドリングされたら意味無しなので、
-TERMや-INTで様子みて、駄目なら-KILLを送るのが確実かと。
0041nobodyさん03/06/25 22:08ID:???
>40
それって手動で解除ってことですか?
それとも、httpとかでの設定すれば自動的にタイムアウトにできるんですか?
■ このスレッドは過去ログ倉庫に格納されています