X



トップページ運用情報
1001コメント347KB

bbs.cgi再開発プロジェクト 3

■ このスレッドは過去ログ倉庫に格納されています
00012chtubo愛用者〜ヘ(゚д゚ヘ))))))〜61 ◆yBEncckFOU
垢版 |
04/02/13 19:08ID:o3jHs/Mb
peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。

関連スレ
【Project peko】2ch特化型サーバ構築作戦 Part6
http://qb3.2ch.net/test/read.cgi/operate/1076413123/
◆ 全サーバトリップ統一作戦
http://qb3.2ch.net/test/read.cgi/operate/1067245837/
bby -- スレッド情報一元管理システム構築スレ
http://qb3.2ch.net/test/read.cgi/operate/1073058944/
BBQ システム(公開串リストメンテ)
http://qb3.2ch.net/test/read.cgi/operate/1073061576/
【連投規制】Samba24 情報要望スレ その3
http://qb3.2ch.net/test/read.cgi/operate/1075568934/
【広告】Rock54【自動排除】 3
http://qb3.2ch.net/test/read.cgi/operate/1074735308/
■ 新しいサーバで read.cgi が正しく動かない問題。 (dat落ち)
http://qb.2ch.net/test/read.cgi/operate/1047840578/


前スレ
bbs.cgi 再開発プロジェクト
http://qb3.2ch.net/test/read.cgi/operate/1053067870/
bbs.cgi再開発プロジェクト2
http://qb3.2ch.net/test/read.cgi/operate/1069144193/
0586仕事人 ★
垢版 |
04/03/02 03:20ID:???
うーん
実況の各板たらーっと見てきたけど 1,001 で止まっているなぁ

>>563
のスレッドだけの問題なのかどうなのか。
0588仕事人 ★
垢版 |
04/03/02 03:48ID:???
警察板 は呪われているのか?
0589動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 03:51ID:oQ+yX4a+
>>588
配り忘れているとか
0590仕事人 ★
垢版 |
04/03/02 03:52ID:???
もちろんまずは自分を疑えってことで
それは見てみたのでしたー
0591動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 03:56ID:oQ+yX4a+
>>590
もしかしてnews6/news7配り忘れていない
0592仕事人 ★
垢版 |
04/03/02 03:59ID:???
どうだろ、、
自動で配布しているからなぁ
version 番号付けて配ってみるです < こんど
0593動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 04:11ID:IJTX52N4
警察板
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
のエラーはでますが、いくらでも書けますよ
0595動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 08:27ID:TSOc+dgc
>>567
oyster100/200/900番台ならroot師におながいしてchownしてもらえばいいのではないかと。
0596動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 14:08ID:RzANnUAw
if (-e $DATFILE && (!-w $DATFILE || -s _ > 512 * 1024)) {
 DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
}

#中略

my $lognum = 0;
if (open(IN, "< $DATFILE")) {
 $lognum = (join('', <IN>)) =~ tr/\n/\n/;
 close(IN);
}

if ($lognum > 1010) {
 chmod(0555, $DATFILE);
 DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");

}else{
 if (-w $DATFILE && open(OUT, ">>$DATFILE")) {
  print OUT "$outdat\n";
  ++$lognum;
  if ($lognum > 999) {
   print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
   ++$lognum;
   close(OUT);
   chmod(0555, $DATFILE);
  }
  close(OUT);

 }elsif (!-e $DATFILE) {
  # スレ立て処理
  chmod(0666, $DATFILE);

 }else{
  DispError("ERROR!", "ERROR:このスレッドには書き込めません。");
 }
}

#(´-`).。oO(テストまでしちゃったよ…)
0597 ◆qb.x27/m96
垢版 |
04/03/02 14:28ID:46NZVWRI
>>534
http://society.2ch.net/test/read.cgi/police/990121724/

>"ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!"

↑これが出ているのに上のスレに書き込めるということは bbs.cgi の序盤のここ↓を通り抜けているということなので
パーミッションがどこかで再変更されているはず。

>#.datが存在してないか書けないならばいばい
>unless(-w $DATAFILE){
>DispError("ERROR!","ERROR:このスレッドには書けません!");
>}
----
http://society.2ch.net/test/read.cgi/police/1040783990/
このスレは現在パーミッションではなくてここ↓で止まっているもよう。

>unless( -s $DATAFILE <= 512000){
>DispError("ERROR!","ERROR:このスレッドは512kを超えているので書けません!");
>}


なので一番ぁゃιぃここをこの↓ように追加修正すれば現在書き込めるものも含めて
再度パーミッション変更されるので書き込み出来なくなるはず。

#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}
if($lognum > 1010)#1011以上なのに666の暴走ストッパー
{
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。禁止禁止禁止!!");
}

#禁止と表示されればここ↑で再設定されたはずなので書き込めていないはず。。
0598動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 22:25ID:WdyfTS6A
WebProg板だと「情報を小出しにするな」って怒られるんだな
規制とかクリティカルな部分を除いて公開、でもダメ?
0599動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/02 22:57ID:+220nzEb
まぁ普通はブラックボックス部分は除いて公開するのが良いよね。
規制のあたりはサブルーチン化してパラメーターと返り値だけ提示すりゃいいんじゃないの。
0603仕事人 ★
垢版 |
04/03/03 20:20ID:???
現在の bbs.cgi の version

20040301
0604 ◆qb.x27/m96
垢版 |
04/03/03 20:39ID:Q6TtuXTp
どこがどう変わったのか変更点がよくわからないですがまだ書き込めます
0605仕事人 ★
垢版 |
04/03/03 20:41ID:???
全部のサーバが同じかどうかの指標。
0607 ◆qb.x27/m96
垢版 |
04/03/03 20:44ID:Q6TtuXTp
そうですか。。
ではまたしばらく待機しておきます。。。
0608▲ 某ソレ511
垢版 |
04/03/03 20:45ID:dMJAeQ2p
>>606
そこで確認できる範囲では、news7だけ更新されませんね。
live5はまた別だろうし。
0609仕事人 ★
垢版 |
04/03/03 20:53ID:???
おおーっ

news7 も配布先リストに加えました。
0616 ◆qb.x27/m96
垢版 |
04/03/04 22:25ID:R3QQxE+y
   ∧_∧
  ( ・∀・) <忙しそうだし、催促せずに待ちますね。。
  ( つ旦)
  と__)__)
0619動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/05 18:04ID:cFF945EX
ためしになつかしドラマ板の1000近いスレをいくつか埋めてみたんだけど
どれも1000突破した。もしかして板、というか鯖によって突破したり突破しなかったりするのか?
0620仕事人 ★
垢版 |
04/03/05 18:11ID:???
ccccc
0622仕事人 ★
垢版 |
04/03/05 18:22ID:???
0.7 です。

お薬貰っていってくださいー
0624仕事人 ★
垢版 |
04/03/05 18:27ID:???
sub MakeWorkFile{
に最後の手段を追加してみた。
0625仕事人 ★
垢版 |
04/03/05 18:27ID:???
my $key = @_[0];
my $workfile = $TEMPPATH . $key . ".html";
my $dattemp = $DATPATH . $key . ".dat";
my (@messx,@content,@logdat);
my ($lognum,$mailto,$time,$brmax,$topnum,$firstlog,$name,$mail,$subject,$message);

open(RDAT,"<$dattemp");
@logdat=<RDAT>;#ログを配列に読み込む
close(RDAT);

#ログのカキコ数を取得
$lognum = @logdat;
if($lognum > 1020)#最後の手段
{
if(-w $dattemp){
my $datdat = $DATPATH . $key;
my $tmpdat = $DATPATH . $key . ".tmp";
my $success;
open(COPY, "cp $dattemp $datdat |");
close(COPY);
$success = 0;
until($success){ $success = rename($datdat, $dattemp); }
chmod(0555, $dattemp);
unlink($tmpdat);
}
DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");
}
if($lognum > 1010)#念のため暴走ストッパー
{
umask(0);
chmod(0555, $dattemp);
DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
}
if($lognum > 999)
{
if(open(OUT,">>$dattemp"))
{
print OUT "1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n";
close(OUT);
$lognum++;
}
umask(0);
chmod(0555, $dattemp);
}
else
{
#パーミッション調整
umask(0);
chmod(0666, $dattemp);
}

0628サザン ★
垢版 |
04/03/05 18:46ID:???
何故か bubble サーバは、
昔立てられたスレッドの所有者が nobody になっているもより。

ということは・・・
0632仕事人 ★
垢版 |
04/03/05 19:21ID:???
引越し時に chmod で 777 にするんじゃなく
chown(でしたっけ?) 後 666 にすべきなのか?

ということは、引越し後の正しい呪文は
0634root ★
垢版 |
04/03/05 19:41ID:???
一般ユーザ(にsuexecされたCGI)がchownなんてできないと思うなぁ。
0636 ◆qb.x27/m96
垢版 |
04/03/05 19:52ID:7NAUewz2
1000越えて書き込めていたのは確認した範囲では
去年以前に建立てられたスレのようだったし
今年に入ってから立てられたもので、1000ストッパーが
効いていないものってなかったような、、

サザンさんの>>628あたりに謎の答えがありそう、、、
0637root ★
垢版 |
04/03/05 20:04ID:???
古いスレを中心に、オーナーがおかしいやつがあるから、そいつら修正すればいいってこと?
(ストッパーが効かない原因のひとつ)

ディレクトリの持ち主がその人であれば「消す」ことはできるから、
例えばnobodyとかが持ち主のファイルを探して、一斉にこんなかんじにすればいいのかな。

(1000000000.dat のオーナーがおかしいとする)

cp -p 1000000000.dat tmp1000000000.dat
rm -f 1000000000.dat
mv tmp1000000000.dat 1000000000.dat

2行目でいきなりmv -fしてもいいけど、なんだかいやな予感がするんで。

find -user nobody とかして、該当のファイルについて一斉にやればよさそうな気がする。
0638root ★
垢版 |
04/03/05 20:06ID:???
FreeBSDでは、

cp -p 1000000000.dat tmp1000000000.dat
mv -f tmp1000000000.dat 1000000000.dat

でOKでした。Linuxでもやってみるか。
0639root ★
垢版 |
04/03/05 20:08ID:???
あ、そっか。Linuxでsuできる環境もってないや。
どなたか、実験きぼんぬ。

% mkdir test
% cd test
% sudo touch A
% cp -p A A.tmp
% mv -f A.tmp A

で、そのユーザのAになれば無問題。
0640仕事人 ★
垢版 |
04/03/05 20:14ID:???
>>635
いや banban で
0641 ◆qb.x27/m96
垢版 |
04/03/05 20:50ID:7NAUewz2
>>637
古いスレでオーナーがおかしいやつの中で
1000間近なスレのURIがいくつか分かりますか?
0644root ★
垢版 |
04/03/05 20:59ID:???
>>641
例えばbubbleサーバのnatsumeloj板なら、

find ./public_html/natsumeloj -user nobody -name \*.dat -print

なんてのを流せば、すぐわかるかと。
これをサーバの数分、板の数分やればいいかな。

ひまをみて、_service/を見て板名とってきてfindかけて、
オーナーをfixするためのshell scriptでも書いてみましょ。
できたら、各マシンで手分けして流していただくということで。
0648root ★
垢版 |
04/03/05 21:04ID:???
移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647

というか、普通はこんなこと起きない気がしますね。< オーナが違う
途中でsuexec環境に変わった場合にのみ、起こるはず。

あるいはsuexecがバグっていて、「httpdのオーナーが抜けてきちゃった」場合とか。
# 経験したことあります。
0650root ★
垢版 |
04/03/05 21:05ID:???
>>648 補足。
> 移転の時は普通にファイルを移動してるだけなので、chownしなくてもいいはずです。>>647

理由: マシンをまたいだファイル移動の時に、オーナーが変わるから。
0653未承諾広告※ ◆TWARamEjuA
垢版 |
04/03/05 21:16ID:JZ5VNBHA
>>639
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:13 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 root root 0 Mar 5 21:12 A
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A.tmp
[(・∀・)ニヤニヤ test]$ mv -f A.tmp A
[(・∀・)ニヤニヤ test]$ ls -la
合計 8
drwxr-xr-x 2 (・∀・)ニヤニヤ users 4096 Mar 5 21:14 ./
drwxrwxrwx 15 root root 4096 Mar 5 21:11 ../
-rw-r--r-- 1 (・∀・)ニヤニヤ users 0 Mar 5 21:12 A
[(・∀・)ニヤニヤ test]$
0654 ◆qb.x27/m96
垢版 |
04/03/05 21:18ID:7NAUewz2
>>644
色々と考えられる事はあるのですが順番にやっていかないと
どれが原因か分からなくなりそうなので、まずこれから。。

見つかったスレに1000番目を書き込んだ時にこれ↓が表示されるかどうかが知りたかったんですよ。
>"ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!"


で、おそらく表示されるだろうとは思うのですが
1000 over を判定しているのはこれ↓を書き込む為にしているような、、
>"1001<><>Over 1000 Thread<>このスレッドは1000を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>\n"


cgiの最初の方でこれ↓しか見ていないのは負荷軽減の為だと思うのですが
1000を越えているかどうかを最初に見ればパーミッションがどうなっていようと
1000を越えているスレには書き込めないと思うのですけど、既出の問題なのかしら、、

>#.datが存在してないか書けないならばいばい
0655未承諾広告※ ◆TWARamEjuA
垢版 |
04/03/05 21:18ID:JZ5VNBHA
>>653
drwxr-x--- 24 root root 4096 Mar 5 21:09 ./
drwxrwxrwx 21 root root 4096 Feb 25 12:56 ../
[(・∀・)ニヤニヤ root]$ mkdir test
mkdir: ディレクトリ `test' を作れません: 許可がありません
[(・∀・)ニヤニヤ root]$
0656root ★
垢版 |
04/03/05 21:34ID:???
>>653
さんくす。Linuxでも問題なさそうですね。
んじゃ、shell script作ってみます。

今日はJimさんデーの2日目なんで、明日以降になるかもしれませんが。
0659root ★
垢版 |
04/03/06 03:05ID:???
902のカーネルだけ、5.2.1-RELEASE-p1に上げてみた(i386モード)
しかし、状況は変わらず。
0660root ★
垢版 |
04/03/06 03:10ID:???
options AAC_DEBUG=3
とか入れてみるか。
0668動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 15:42ID:26zSxLur
1000越えて書き込まれてたスレ発見。
真・スレッドストッパーのガイドライン
http://that.2ch.net/test/read.cgi/gline/1022203584/l50
試しに書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と出ました。
このスレが建ったのは2002年、>>636で書かれている去年以前に建ったスレ。

手を加えるならXXX 名前:書けませんよ。。。 投稿日:停止
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ と本当にスレッドストッパーかけてくださいと冗談言ってみる。
0669動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 15:45ID:26zSxLur
ギコナビで書き込もうとしたら
ERROR:このスレッドには書き込めません。緊急緊急緊急!!
と表示されているが実際には書き込まれてます。

0672仕事人 ★
垢版 |
04/03/11 16:37ID:???
自動で止まった?
0674動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 19:03ID:yZZ2AD3B
こっちに誘導されて来ました

yournet.ne.jpの規制が先ほど解除されたのですがlive10の規制が解除されていないようです。
解除の方よろしくお願いします。
0676動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/11 19:23ID:/dqMBLPO
規制絡みの設定のひとつF22が入ってないんじゃない?>live10

【Project peko】2ch特化型サーバ構築作戦 Part8
http://qb3.2ch.net/test/read.cgi/operate/1078972549/

19 名前:root ★ 投稿日:04/03/11 13:36 ID:???
live10, f22への登録おながいします。>サザンさんかな。

【実況板】 live5/7/8/9 鯖 【専用スレッド】その4
http://qb3.2ch.net/test/read.cgi/operate/1078921755/359

0681 ◆qb.x27/m96
垢版 |
04/03/12 13:05ID:H9TO5cST
そのうち、じゃなくて1021で止まる、ですね。
0682 ◆qb.x27/m96
垢版 |
04/03/12 13:13ID:H9TO5cST
>>625 ソース


>if($lognum > 1020)#最後の手段
          ↑
       これを超えたら
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。最後の手段!!");

それ以降は↓になるわけです。
>DispError("ERROR!", "ERROR:このスレッドには書き込めません。緊急緊急緊急!!");
0683動け動けウゴウゴ2ちゃんねる
垢版 |
04/03/12 13:25ID:dfBaKHPM
最後の手段が効いてるけど緊急緊急緊急は効いてないってことか
最初から$lognum > 1000で判定しない理由は何だっけ?
0684 ◆qb.x27/m96
垢版 |
04/03/12 14:00ID:H9TO5cST
効いてないのは古いファイルが chmod(0555, $dattemp); 出来ていないから。
そこで 1020を超えた時点で条件に引っ掛けて、datファイルを新しいファイルにコピーして
そのファイルを chmod(0555, $dattemp); している。

その後今までの古い datファイルは消去。
新しいファイルはパーミッションが 0555 になっているので今度は「緊急緊急緊急」で分岐するというわけ。
0686▲ 某ソレ511
垢版 |
04/03/13 03:00ID:1eDifo9s
>>685
たぶん移転するためのcgiはbbs.cgiじゃないから
ここじゃないほうがいいかなぁ、、
まあ、もう書いちゃってるんで言ってもしょうがないですが。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況