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

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

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

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

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

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

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

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

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

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

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

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

killは手動解除。alarm()は、プロセルが特定のルーチンに一定時間以上とどまっている場合
(大抵ブロックか無限ループ)に、プロセス自身に自殺させる(あるいは何らかの措置を取らせる)
ことができる。perldoc -f alarm参照(システムコールを直に呼ぶならman 3 alarm)。

> それとも、httpとかでの設定すれば自動的にタイムアウトにできるんですか?

httpじゃなくてhttpdね。お使いのhttpdのマニュアルを読んでみてください。
00444103/06/25 22:23 ID:???
>43
無限ループにはまっても、書き方によってスクリプト自身で自殺する
(タイムアウトできる)ことができるってことですね。サンクス!!

>httpd
すんません、気をつけて書きます。
0045nobodyさん03/06/25 22:24 ID:???
>>43
No entry for alarm in section 3 of the manual

システムコールなんだからセクション2だろ
0046nobodyさん03/06/25 22:38 ID:???
>>43
alarmがどういうものなのか、勘違いさせそうな説明だな。
いや、43はきちんと理解しているんだろうけど。
0047nobodyさん03/06/25 23:01 ID:???
>>439
性的責任能力のない人間とのセックスに関する「同意」は無効という話なんですが。
少なくともこの国では13歳未満とセックスすると無条件でレイプ。

>>440
だから親告する権利は親にあるんだってば。親に知られなきゃおっけーってのは
「ばれなきゃおっけー」と等価でしょ?
0048nobodyさん03/06/25 23:02 ID:???
>>439
性的責任能力のない人間とのセックスに関する「同意」は無効という話なんですが。
少なくともこの国では13歳未満とセックスすると無条件でレイプ。

>>440
だから親告する権利は親にあるんだってば。親に知られなきゃおっけーってのは
「ばれなきゃおっけー」と等価でしょ?
0049nobodyさん03/06/25 23:09 ID:???
>>439-440
よぉ〜く話聞いておけよ!
>>47が、2度も言ってくれてるんだぞ!
2度言う必要があるのかわからないが、
でも、2度も同じ事を言ってくれてるんだぞ!
早くロリコンを治すことたな。
0050nobodyさん03/06/25 23:45 ID:f3Z/hiNx
Apache1.3.27を直接編集して
実行時間に制限を書ける方法ってあるのですか?
0051nobodyさん03/06/26 02:03 ID:???
Apache1.3.27を直接編集age
0052nobodyさん03/06/26 07:18 ID:???
>>50
C言語とUNIXを勉強しる
0053nobodyさん03/06/26 14:06 ID:???
>>50
mod_perlのことかと思ったがそうでもなさそうだな
httpdがCGIを実行するわけじゃないぞ?
0054nobodyさん03/06/26 14:50 ID:???
>>53
httpdがforkしてperlなんかをexecするんだから、子プロセスに
シグナルを送ることは可能なのでは?

子プロセス側で fork and fork and exitとかされると
打つ手なしっぽいけど。
0055nobodyさん03/06/26 15:50 ID:???
>>54
可能だろうけど発想的に実行時間の制限をhttod側から設けるってするかね?
0056nobodyさん03/06/26 17:36 ID:???
>>55
某プロバイダで働いてた時に検討対象になったことある。結局やんなかったけど。daemon化されて
initに引き取られたら意味ないし。
結局プロセス監視daemon走らせて、nobodyで居着いてる奴に片っ端から9番投げて殺すことになったハズ。
005742,5203/06/26 18:09 ID:3q2oVgaC
>>55
UNIX+ApacheならRLimitCPUでできる。
他にメモリの使用量を制限するRLimitMEMもある。
サーバを貸すなら設定しておくべき。

42では無視されちゃったよ・・・
0058nobodyさん03/06/27 09:39 ID:???
それよりも、本7 の暴走を止めてくれや(藁
0059nobodyさん03/06/27 10:21 ID:???
>>58
SIGKILLでterminateする以外止める方法ないだろ(w

本7の無限ループ:

持ってる限りの知識をひけらかす → いい加減な知識しかないので馬鹿にされる ┐
↑                                                 ↓
└ 汚名挽回するには頭がいい所を見せないと ← 自分は賢いと思っているので不本意
0060nobodyさん03/06/27 10:22 ID:???
汚名挽回じゃなくて名誉挽回だな。鬱。
0061nobodyさん03/06/27 10:40 ID:???
汚名挽回でいいじゃんw

最初から汚名だけど…
0062nobodyさん03/06/27 10:41 ID:???
>>59
その持ってる限りの知識でさえ、パクリだったりする訳で…。
006337403/06/27 11:27 ID:???
なんだかんだ言ってもポン7は人気者だな。。。


過疎板では
0064nobodyさん03/06/28 01:32 ID:???
>>18
宅鯖が、暴走というか、激しくレスポンス重くなったw
SSHがつながらなくなったので、しゃーなくハードウェアリセットしたよw
0065nobodyさん03/06/28 08:37 ID:???
>>64
おまえ、まさか IIS で建てて CodeRed, Nimda 飼ってるんじゃねーだろーなー?w
0066nobodyさん03/06/28 09:23 ID:SawIuqpj
>>64
ほんとにやるとは・・・。鯖にコンソール付けるか、端末立てておくか、
alarm()で自殺装置付けるとかしないと。

コマンドラインから実行した場合はCtrl+Cで止まると思うけど。
0067nobodyさん03/06/28 09:23 ID:SawIuqpj
>>65
Windowsってfork使えたっけ?
0068nobodyさん03/06/28 09:25 ID:???
基本的にはパイロットがヘタレでそれを守ろうとする親心からだな。
0069あぼーんあぼーん
あぼーん
0070nobodyさん03/06/28 11:09 ID:???
>>69
はいはい。はした金の為にご苦労さん。NGワードに入れたよ
0071nobodyさん03/07/12 10:03 ID:HqRrxqAg
ローカルでチェックしたことない。
デザインの改造ばかりで内部はいじらないし。
0072あぼーんあぼーん
あぼーん
0073nobodyさん03/07/12 10:35 ID:???
ロジック クメルノカナ…(´д)ヒソ(´д`)ヒソ(д` )
0074nobodyさん03/07/12 17:37 ID:p/T5Jtg4
>>73
何をもってローカルとするかだと思うが、俺はテスト用のWebサーバー機に
直接ssh接続して編集してるから、そういう意味でのローカル(端末機)上での
チェックは一度もしたことないし、どこに必要性があるのか分からない。
0075nobodyさん03/07/12 17:40 ID:???
>>74
あくまで共用のレンタルサーバなりの話ですよ。

その環境でそんな愚行を行っているのなら尊敬するが。
0076nobodyさん03/07/12 17:54 ID:p/T5Jtg4
>>75
なんでそこで急に「共用」とか「レンタル」とか条件が狭まるんだ?
「非ローカル=共用のレンタルサーバなり」という論理展開が理解できないんだが。

というか別にレンタルサーバー上にテスト環境を作ったって構わないと思うが。
どこが愚行なの?
0077nobodyさん03/07/12 18:53 ID:???
ヒッシダナ… (´д)ヒソ(´д`)ヒソ(д` )
0078あぼーんあぼーん
あぼーん
0079山崎 渉03/07/15 11:07 ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0080イキリー ◆IKly1XvoQY 03/07/31 10:00 ID:???
ちょっとテスト。
0081山崎 渉03/08/02 02:42 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0082ぼるじょあ ◆ySd1dMH5Gk 03/08/02 05:29 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0083山崎 渉03/08/15 22:46 ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0084nobodyさん03/08/16 03:58 ID:???
レンタルサーバ(共有)で、CGI暴走を起こしてしまった場合、どうなるの?
自動的に、タイムアウトでプロセスがkillされるんでしょうか?
0085nobodyさん03/08/16 05:02 ID:???
>>84
サーバの設定や暴走の種類によりけり。
メモリ制限で落ちるか、CPU時間制限で落ちるか・・・
クライアント側で読み込み中止したらプロセスも止められると思う。
0086nobodyさん03/08/17 06:05 ID:???
昔は暴走って言うとOSがクラッシュしてしまうレベルのモノを指してた
気がするんだけどな・・・。

WindowsベースのWebサーバーなら充分ありえるか。
その場合、会社の一番下っ端が夜中に泣きながらタクシーで駆けつけて手動リセット。
0087nobodyさん03/09/25 19:18 ID:???
実際RLimitがどれくらいの値になっているのか
教えて( ゚д゚)ホスィ…
0088nobodyさん03/09/25 19:22 ID:???
昔は保護モード無かったからな・・・
0089nobodyさん03/09/25 23:50 ID:???
>>88
初耳なんですが、保護モードってなんですか?

ググってみると、ファイルのパーミッションのことのように思えるんですが、
それだと
>>88 の言いたいことが分からないです・・・。
0090nobodyさん03/09/26 05:27 ID:???
>>88
プリエンティブでもなかったしね。
0091nobodyさん03/09/26 05:33 ID:???
>>89
「プロテクトモード」で検索してみ。
0092nobodyさん03/09/26 05:41 ID:???
>>86
・ポケベルを分解する
・バイブ用モーターを取り外し、そこにリレーをつける
・パソコンのリセットスイッチの接点を外してむきだしにしておく。
・リレーの余った接点をリセットスイッチが付いていたコードに接続する
・ポケベルをバイブモードにしてパソコン本体に貼り付けておく

これでいつでもどこでも、電話一本でリセット可能。
0093nobodyさん03/09/27 10:43 ID:???
>>92
ポケベルの月額基本料がもったいない。
固定電話機を使う方がよさげ。
登録した番号だけベルを鳴らす設定にしとけばいいだろ。
00948903/09/27 17:12 ID:???
>>91

なるほど、理解しました。ありがとうございます。
0095nobodyさん03/09/27 20:36 ID:???
>>93
初期費用込みで考えたら固定電話の方がコストかかるし、
ベルの部分も最近の電子式はモーターほど単純じゃないし端子の
場所も分かりにくいから初心者向けじゃないなぁと思ってさ。

まぁ固定電話があって手間ヒマ惜しまないんだったら、FAXモデム
を応用すれば1つの回線で複数台のマシンの管理ができると思うが。
0096nobodyさん03/12/31 15:45 ID:???
>>1
今日から明日あたりはかなり暴走します
0097nobodyさん04/02/25 11:36 ID:???
>>92
いまさらなレスだが,プリケ使って同じようなことしてたよ。
間違い電話でリセットしまくったんでやめた_| ̄|○
0098nobodyさん2006/05/01(月) 19:57:10 ID:???
age
0099nobodyさん2006/05/01(月) 23:22:01 ID:???
CGIの暴走ね〜
しょーもないバグを客に報告したくないとき
「暴走しました」
と報告した時に発生。
0100nobodyさん2006/05/01(月) 23:43:10 ID:???
100。

>>47-49だけがこのスレに託された希望
0101nobodyさん2006/05/02(火) 07:06:35 ID:???
100まで3年かかるのなら>>439まで13年
0102nobodyさん2007/07/06(金) 12:06:56 ID:???






■サッカー:U17日本代表、PK戦の末韓国に勝利

 23日午後2時、天安総合運動場で8カ国国際大会(U17)3位決定戦が行われ、
日本代表は韓国と対戦、PK戦の末勝利し3位となった。前半24分、水沼宏太の
ゴールで日本が先制。その後、韓国はペナルティーキック
からゴールを決め1-1の同点としたものの、その後PK戦にもつれこみ、7-6で
日本が勝利をおさめた

朝鮮日報JNS
http://www.chosunonline.com/article/20070623000031












0103nobodyさん2008/01/07(月) 12:24:42 ID:???
>>94
間違っています。
以上。
↓次の方どうぞ
0104nobodyさん2008/01/12(土) 22:51:05 ID:???
>>102
あるよ。
以上。
↓次どうぞ
0105nobodyさん2008/01/18(金) 16:44:22 ID:???
>>103
可能です。
以上。
はい、次。
0106nobodyさん2008/07/28(月) 22:25:05 ID:???
cgiでstack overflowさせたことならある
0107nobodyさん2009/12/13(日) 07:35:31 ID:???
無限リダイレクトとか?
0108 【26.1m】 電脳プリオン2012/05/06(日) 14:29:21.27 ID:????PLT(12079)

  ∧_∧
  ( ・∀・)            人 ガッ
  (    つ―-‐-‐-‐-‐-‐○ <  >__Λ∩
  人 Y ノ.             V`Д´)/
  し(_)                  /  ←>>81
0109nobodyさん2013/12/22(日) 22:54:49.35 ID:???
わからない
0110nobodyさん2016/10/22(土) 23:01:56.71 ID:???
おちんちんぅ!
新着レスの表示
レスを投稿する