1read 100read
2013年06月WebProg485: CGI暴走はどういう時に起きるのですか? (108) TOP カテ一覧 スレ一覧 2ch元 削除依頼
●CGI作成に愛の手を・・・● (160)
CGI暴走はどういう時に起きるのですか? (108)
一人で始めるWEB起業何が一番面白いかな? 5案目 (137)
PHPで作られたサイト (156)
もうそろそろクッキーJavaScript必須でいいですか? (106)
【 引数 】をインスウとずっと呼んでた奴 (102)

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


1 :03/06/23 〜 最終レス :2012/05/06
よくCGIは暴走したら大変だから
必ずローカル環境で確かめてましょうなどと言われますが
未だにテストしていて暴走など起きたことありません。
そもそも本当に暴走によるサーバダウンなんて起きるのでしょうか?
とりあえず「whileなどに因る無限ループ」というのは聞きますが
逆に言えば原因としてこれしか聞いたことないです。
じゃあこれさえ気をつければOKでしょうか???

2 :
( ´_ゝ`)2getしておくか

3 :
( ´_ゝ`)2getでいいや

4 :
もういいよ。

5 :
配列に巨大な添字を指定、とか。
ローカルで、配列に間違えてハッシュのリファレンスを指定したらフリーズした。
(^Cで停止はできるけど)

6 :
糞スレ立てるような自信過剰な奴が共用サーバを借りたときに起きます

7 :
while(1) {
}

8 :
>>7
お前も>>1と同じレベルか

9 :
>>1
CGIだからです。
OSにたとえると、Win9x系のレベルだからです。

10 :
糞スレ立てんな。ヴォケが!
11 :あぼーん:あぼーん
あぼーん

12 :
たかが1人のユーザのページが暴走したぐらいで落ちる
ような鯖は管理が甘いんじゃないのか?
一定割合以上CPUが使えないようにするとか、ある転送量
以上になるとサービスが停止するとか、あらかじめ規制し
とけば、暴走CGIを実行されてもそいつのサイトが落ちる
だけで、鯖自体は痛くも痒くもないだろう。
そんな甘い鯖なら、中には意図的に暴走するようにして
鯖を落とそうとするやつもいるだろうし、鍵のない家に
住んでて泥棒に入られたというような話やね。
13 :あぼーん:あぼーん
あぼーん

14 :
>>1
両親が共働きだと暴走し始めます。

15 :
(^∀^)ゲラゲラ

16 :
>>12
に通じるけど、そもそも、タイムアウトしないの?

17 :
>>12は何か勘違いしてるからほっとけ

18 :
マジレスすると、
#!/usr/bin/perl
fork while 1;
__END__
この程度でダメージ喰らうサーバーは結構ある。

19 :
>>16
俺もそれ不思議。
perl使ったことないから知らんのよ。

20 :
メモリ管理が甘いと落ちる。

21 :
>20
落ちるってhttpdが無限ループで何しても反応しなくなるってこと?
で、http全体を巻き込んで落ちるの?
それともOSが落ちるの?<そんなことないよね??

22 :
>>21
昔のパソコンならありそうだけど、ふつうサーバー用OSでは
httpdが落ちたりOSが落ちたりはまずありえない。
で、Cなんかで書かれた物でメモリ管理が間違ってる(甘い以前の問題)
物はよくCore吐いてプロセスが落ちたりするけど、
Perlだとメモリ管理自体をperlが行うから相当雑なスクリプティングでも
プロセスが落ちるところまでは滅多に行かない。
#!/usr/bin/perl
$a .= "0123456789abcdef" x 65536 while 1;
まぁこのくらいやっとけば起動後しばらくして使用可能なメモリ使い切って
プロセス自体は落ちると思うけど、サーバーには影響ないと思われる。

23 :
まずPerl自体がメモリ管理というかOSとの連携が甘いと思う。
HTTPDですぐに幽霊プロスセ作るバカチン(このスレの傾向だとANとかが多
い)だとどんどん未解放領域が増えてしまいにHttpdに泣きつく。
で、自分だけでも手一杯なHttpdはOS叩いて共倒れ。
Winだとまずデスクトップ画像が更新されなくなる(メッセージの不通達)から
Explorerが落ちる。次にPerlが落ちる。で、Httpdがメモリアドレス違反〜がで
て鯖が死ぬ。
とにかくPerlのメモリ管理を意識してやる事かな。俺はPHPに乗り換えてましに
なったけど

24 :
>>23
なんか・・・・すごく適当なことをいい加減に書いてないか?

25 :
>>24
レスしちゃ駄目です。NGワードにしてください。荒しなので

26 :
実際によく起こってた鯖落ちの経過なんだが

27 :
>>25
なるほど。了解です。

28 :
粘着自演のオンパレードだな
29 :あぼーん:あぼーん
あぼーん
30 :あぼーん:あぼーん
あぼーん
31 :あぼーん:あぼーん
あぼーん

32 :
あっ私も、1と同じ事を聞きたかったです。
改造のプロの私には、CGIの暴走の
意味が分かりません。

33 :
>>1
>>32
仕事で8年CGIスクリプトを書いてるけど、ローカルでテストなんかしたことないです。
都市伝説みたいなもんでしょう。
> 暴走によるサーバダウンなんて起きるのでしょうか?
サーバーがsystem7とかWindows95とかだったらあるかも知れない。
34 :あぼーん:あぼーん
あぼーん

35 :
ダウンしなくても過負荷によるアカウント停止ってのはあるわな

36 :
fcgi使ってみる。
37 :あぼーん:あぼーん
あぼーん

38 :
無限ループを解除・防止できる方法ってありますか?

39 :
kill -TERM pid

40 :
>>38
httpdやOS側で実行時間に制限をかける。
無限ループが起きそうな場所の前後でalarm()を呼ぶ。
>>39
スクリプト側でハンドリングされたら意味無しなので、
-TERMや-INTで様子みて、駄目なら-KILLを送るのが確実かと。

41 :
>40
それって手動で解除ってことですか?
それとも、httpとかでの設定すれば自動的にタイムアウトにできるんですか?

42 :
rlimit

43 :
>>41
> それって手動で解除ってことですか?
killは手動解除。alarm()は、プロセルが特定のルーチンに一定時間以上とどまっている場合
(大抵ブロックか無限ループ)に、プロセス自身に自殺させる(あるいは何らかの措置を取らせる)
ことができる。perldoc -f alarm参照(システムコールを直に呼ぶならman 3 alarm)。
> それとも、httpとかでの設定すれば自動的にタイムアウトにできるんですか?
httpじゃなくてhttpdね。お使いのhttpdのマニュアルを読んでみてください。

44 :
>43
無限ループにはまっても、書き方によってスクリプト自身で自Rる
(タイムアウトできる)ことができるってことですね。サンクス!!
>httpd
すんません、気をつけて書きます。

45 :
>>43
No entry for alarm in section 3 of the manual
システムコールなんだからセクション2だろ

46 :
>>43
alarmがどういうものなのか、勘違いさせそうな説明だな。
いや、43はきちんと理解しているんだろうけど。

47 :
>>439
性的責任能力のない人間とのRに関する「同意」は無効という話なんですが。
少なくともこの国では13歳未満とRすると無条件でR。
>>440
だから親告する権利は親にあるんだってば。親に知られなきゃおっけーってのは
「ばれなきゃおっけー」と等価でしょ?

48 :
>>439
性的責任能力のない人間とのRに関する「同意」は無効という話なんですが。
少なくともこの国では13歳未満とRすると無条件でR。
>>440
だから親告する権利は親にあるんだってば。親に知られなきゃおっけーってのは
「ばれなきゃおっけー」と等価でしょ?

49 :
>>439-440
よぉ〜く話聞いておけよ!
>>47が、2度も言ってくれてるんだぞ!
2度言う必要があるのかわからないが、
でも、2度も同じ事を言ってくれてるんだぞ!
早くロリコンを治すことたな。

50 :
Apache1.3.27を直接編集して
実行時間に制限を書ける方法ってあるのですか?

51 :
Apache1.3.27を直接編集age

52 :
>>50
C言語とUNIXを勉強しる

53 :
>>50
mod_perlのことかと思ったがそうでもなさそうだな
httpdがCGIを実行するわけじゃないぞ?

54 :
>>53
httpdがforkしてperlなんかをexecするんだから、子プロセスに
シグナルを送ることは可能なのでは?
子プロセス側で fork and fork and exitとかされると
打つ手なしっぽいけど。

55 :
>>54
可能だろうけど発想的に実行時間の制限をhttod側から設けるってするかね?

56 :
>>55
某プロバイダで働いてた時に検討対象になったことある。結局やんなかったけど。daemon化されて
initに引き取られたら意味ないし。
結局プロセス監視daemon走らせて、nobodyで居着いてる奴に片っ端から9番投げてRことになったハズ。

57 :
>>55
UNIX+ApacheならRLimitCPUでできる。
他にメモリの使用量を制限するRLimitMEMもある。
サーバを貸すなら設定しておくべき。
42では無視されちゃったよ・・・

58 :
それよりも、本7 の暴走を止めてくれや(藁

59 :
>>58
SIGKILLでterminateする以外止める方法ないだろ(w
本7の無限ループ:
持ってる限りの知識をひけらかす → いい加減な知識しかないので馬鹿にされる ┐
↑                                                 ↓
└ 汚名挽回するには頭がいい所を見せないと ← 自分は賢いと思っているので不本意

60 :
汚名挽回じゃなくて名誉挽回だな。鬱。

61 :
汚名挽回でいいじゃんw
最初から汚名だけど…

62 :
>>59
その持ってる限りの知識でさえ、パクリだったりする訳で…。

63 :
なんだかんだ言ってもポン7は人気者だな。。。

過疎板では

64 :
>>18
宅鯖が、暴走というか、激しくレスポンス重くなったw
SSHがつながらなくなったので、しゃーなくハードウェアリセットしたよw

65 :
>>64
おまえ、まさか IIS で建てて CodeRed, Nimda 飼ってるんじゃねーだろーなー?w

66 :
>>64
ほんとにやるとは・・・。鯖にコンソール付けるか、端末立てておくか、
alarm()で自殺装置付けるとかしないと。
コマンドラインから実行した場合はCtrl+Cで止まると思うけど。

67 :
>>65
Windowsってfork使えたっけ?

68 :
基本的にはパイロットがヘタレでそれを守ろうとする親心からだな。
69 :あぼーん:あぼーん
あぼーん

70 :
>>69
はいはい。はした金の為にご苦労さん。NGワードに入れたよ

71 :
ローカルでチェックしたことない。
デザインの改造ばかりで内部はいじらないし。
72 :あぼーん:あぼーん
あぼーん

73 :
ロジック クメルノカナ…(´д)ヒソ(´д`)ヒソ(д` )

74 :
>>73
何をもってローカルとするかだと思うが、俺はテスト用のWebサーバー機に
直接ssh接続して編集してるから、そういう意味でのローカル(端末機)上での
チェックは一度もしたことないし、どこに必要性があるのか分からない。

75 :
>>74
あくまで共用のレンタルサーバなりの話ですよ。
その環境でそんな愚行を行っているのなら尊敬するが。

76 :
>>75
なんでそこで急に「共用」とか「レンタル」とか条件が狭まるんだ?
「非ローカル=共用のレンタルサーバなり」という論理展開が理解できないんだが。
というか別にレンタルサーバー上にテスト環境を作ったって構わないと思うが。
どこが愚行なの?

77 :
ヒッシダナ… (´д)ヒソ(´д`)ヒソ(д` )
78 :あぼーん:あぼーん
あぼーん

79 :

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

80 :
ちょっとテスト。

81 :
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

82 :
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

83 :
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

84 :
レンタルサーバ(共有)で、CGI暴走を起こしてしまった場合、どうなるの?
自動的に、タイムアウトでプロセスがkillされるんでしょうか?

85 :
>>84
サーバの設定や暴走の種類によりけり。
メモリ制限で落ちるか、CPU時間制限で落ちるか・・・
クライアント側で読み込み中止したらプロセスも止められると思う。

86 :
昔は暴走って言うとOSがクラッシュしてしまうレベルのモノを指してた
気がするんだけどな・・・。
WindowsベースのWebサーバーなら充分ありえるか。
その場合、会社の一番下っ端が夜中に泣きながらタクシーで駆けつけて手動リセット。

87 :
実際RLimitがどれくらいの値になっているのか
教えて( ゚д゚)ホスィ…

88 :
昔は保護モード無かったからな・・・

89 :
>>88
初耳なんですが、保護モードってなんですか?
ググってみると、ファイルのパーミッションのことのように思えるんですが、
それだと
>>88 の言いたいことが分からないです・・・。

90 :
>>88
プリエンティブでもなかったしね。

91 :
>>89
「プロテクトモード」で検索してみ。

92 :
>>86
・ポケベルを分解する
・R用モーターを取り外し、そこにリレーをつける
・パソコンのリセットスイッチの接点を外してむきだしにしておく。
・リレーの余った接点をリセットスイッチが付いていたコードに接続する
・ポケベルをRモードにしてパソコン本体に貼り付けておく
これでいつでもどこでも、電話一本でリセット可能。

93 :
>>92
ポケベルの月額基本料がもったいない。
固定電話機を使う方がよさげ。
登録した番号だけベルを鳴らす設定にしとけばいいだろ。

94 :
>>91
なるほど、理解しました。ありがとうございます。

95 :
>>93
初期費用込みで考えたら固定電話の方がコストかかるし、
ベルの部分も最近の電子式はモーターほど単純じゃないし端子の
場所も分かりにくいから初心者向けじゃないなぁと思ってさ。
まぁ固定電話があって手間ヒマ惜しまないんだったら、FAXモデム
を応用すれば1つの回線で複数台のマシンの管理ができると思うが。

96 :
>>1
今日から明日あたりはかなり暴走します

97 :
>>92
いまさらなレスだが,プリケ使って同じようなことしてたよ。
間違い電話でリセットしまくったんでやめた_| ̄|○

98 :
age

99 :
CGIの暴走ね〜
しょーもないバグを客に報告したくないとき
「暴走しました」
と報告した時に発生。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
PHPで2chを真似てこんなモン作ってみますた。 (130)
ウェブプログラミングで使えるデザインパターン (164)
オサーンのプログラミング奮闘記[PHP] (133)
WEBプログラマのすすめ (169)
金出すからスクリプト作ってよvol.1 (123)
新しくperlで標準で欲しい関数は? (194)
--log9.info------------------
当時憧れだった/羨ましかったもの (154)
世界初のCPU・MPUはi4004ではない?! (101)
【友好数探し】ベンチスレ@昔のPC板 (183)
ここだけPCの進化が15年前に止まったスレ (111)
ここだけ時代が10年間ずれているスレ part2 (102)
学研のBIGMOUSEを語ろう! (198)
古いPCに新しいOSインスコして使うスレ (152)
きょうはじめてぼくんちにぱそこんがやってきました (119)
古いマシンにGUI (136)
【半田】86ボードコンデンサ張り替え大作戦【コテコテ】 (112)
パソコン博物館をつくろうとしている人の数→ (121)
昔のPCっぽいヤツが発売されるぞ (101)
> (158)
Twitterの痛いユーザーを晒すスレ 2ツイート目 (952)
ふたばちゃんねる・なりきり板 6 (562)
ふたばちゃんねるアク禁被害者スレ その14 (355)
--log55.com------------------
日本のフュージョンは何故死んだのか?
【めがね】ラリー・コリエル[Larry Coryell]
今時フュージョンなんてやってるやついるの?
有無を言わさずキング オブ フュージョンを一名挙げ
上原ひろみ ALIVE JAPAN TOUR 2014
フュージョンっぽいゲームミュージック
雑談スレ in フュージョン板
ハービー・ハンコック(ポール・ジャクソンJr)