トップページunix
141コメント61KB

slackwareのカーネル再構築

■ このスレッドは過去ログ倉庫に格納されています
0001ひろゆきNGNG
jbbs.netの処理できるプロセス数に限度があるために、
アクセス数が増えると、500エラーになってしまいます。
改善方法として、カーネルをプロセス数の限度を変更して
再構築するというものになるとおもうんですが、
なにぶん素人なもので、、、
どこかに、作業の手順がまとまったようなものはあるでしょうか?
0002って優香NGNG
こちらに来たのですね。(笑)

いろいろ探し回ったんですが、これくらいしか情報が。

ftp://ftp.riken.go.jp/pub/Linux/kernel/v2.0/patch-html/patch-2.0.37/linux_include_linux_tasks.h.html

#define NR_TASKS 512 /* Max 4092@` or 4090 w/APM configured on x86 */

となってるので、1024@` 2048@` ...って徐々に増やして、再構築。
こんなに簡単なモンじゃぁ無いんだろぅなぁ。。。きっと。

BSD系だと、
sysctl -w kern.maxproc=1024
コマンド1発らしいのですが。。。

再構築は、こちらをどうぞ。
http://www.linux.or.jp/JF/JFdocs/INDEX-JF.html
http://www.linux.or.jp/JF/JFdocs/Kernel-HOWTO.html

Lunux(slackware)ということなので、
お役に立てていないので、スミマセン。
0003って優香NGNG
今日は祝日なので、明日からはたくさんレスが付くと思います。

じゃぁ、なんでわたしは会社から。。。(笑)
0004>2NGNG
この方法で良いんじゃない?
ただ、この方法をやっちゃうと動かなくなるアプリがあるかもしれない
という話を聞いた事があるけど…
0005名無しさんNGNG
4> 動かなくなるアプリ
この辺りの具体的な情報が欲しいですね。
誰か linux-MLに参加してる方がいらっしゃれば
詳細を聞いて頂きたいです。
ココ 2chでは、致命的な障害になりかねないでしょうから。
0006ちょっと待った > 4NGNG
MLを検索してみたのですが、NR_TASKSだけではないみたいです。

http://his.luky.org/ML/fol.1999/msg04667.html

フォローには、
Documentation/proc.txt との事なので、更に探してみます。
0007ちょっと待ったNGNG
file-nr と file-max の所に

> # cat /proc/sys/fs/file-max
> 4096
> # echo 8192 > /proc/sys/fs/file-max
> # cat /proc/sys/fs/file-max
> 8192

> 一方で、これ以外にプロセスごとにオープンできるファイルの最大数が
> 存在します。残念なことに、これはそう簡単には変更できません。この
> 最大値はデフォルトでは 1024 に設定されており、これを変更するため
> には /usr/src/linux/include/linux にある limits.h と fs.h を書き
> 変える必要があります。NR_OPEN の定義を変更してカーネルを再コンパ
> イルしてください。

んー。。。
これで本件が解決できるかどうかの絡みは判らないですねぇ。。。

/usr/src/linux/include/linux/posix_type.hの
#define __FD_SETSIZE 1024
は、何に効果的なんでしょうか。
0008名無しさんNGNG
6@`7で言っているのは最大のファイルオープン数なので直接は関係してきません。
ただし、ファイルをオープンするプロセスがたくさん起動すると、
オープンできる最大値に達することがあるっていうことですね。

ファイルの最大オープン数に限って言えば、
動的に変えられるのでカーネルのリコンパイルする必要はありません。
たぶんこれは2.2からのみ。(2.0は手元に無いのでわからない)
プロセスあたりの最大数1024っていうのは変える必要無いでしょう。

それから、はたしてほんとに同時実行プロセス数を
増やすだけで解決するのかどうか非常に疑わしいです。
状況が余計悪くなることもあります。

まずapache(ですよね?)設定をみなおすことをお勧めします。
0009ひろゆきNGNG
httpdのerror_logです。こんな感じです。
これをサーバ会社のat-linkに送ってみたら、
>Linuxで初期設定で動作可能なプロセス数を超えてしまっているため
という回答を頂きました。

at-link側でも、カスタマイズの設定をやるようですが、
いつになるかはちと不明とのことで、こちらでできるようなら
やってしまおうかと思ってます。
優香さんのリンクをたどってみます。
自宅PCで一度試してみたほうが安全そうですね。。
ドキドキ
> [Fri Jan 7 00:32:06 2000] [error] [client ] (11)Try again: couldn't
> spawn child process: /var/lib/httpd/htdocs/2ch/test/readall.cgi
> [Fri Jan 7 00:32:06 2000] [error] [client ] (11)Try again: could
> n't spawn child process: /var/lib/httpd/htdocs/2ch/test/bbsback.cgi
> [Fri Jan 7 00:32:07 2000] [error] [client ] (11)Try again: could
> n't spawn child process: /var/lib/httpd/htdocs/2ch/test/readall.cgi
> [Fri Jan 7 00:32:07 2000] [error] [client ] (11)Try again: could
> n't spawn child process: /var/lib/httpd/htdocs/2ch/test/readall.cgi
00106@`7NGNG
__FD_SETSIZEに関しては、ソース中コメントに

/*
* This allows for 1024 file descriptors: if NR_OPEN is ever grown
* beyond that you'll have to change this too. But 1024 fd's seem to be
* enough even for such "real" unices like OSF/1@` so hopefully this is
* one limit that doesn't have to be changed [again].
*
と、ありますので、充分みたいですね。
(2chのような用途で充分か否かは、?ですが。)
00116@`7NGNG
更に、実環境に絡んで、設定値の標準的値とかの話はないんですかね?
例えば、昔は「スワップファイルは、実搭載メモリの2倍」とか。

2chのピーク時のアクセス数が、いくついくつで、
CGIを実行する際に生まれるプロセスは、いくつだから
最大プロセス数は、このくらいで。。。とか。
0012名無しさんNGNG
なるほど・・・apacheですよね、これは。
apacheの設定の MaxClients が大きすぎるのではないでしょうか?
重さを考えるとこれをまず絞ってみたほうが良いかもしれません。
0013ちょっと待ったNGNG
すっかり、6@`7にしてしまった。(笑)

12> apacheの設定の MaxClients が大きすぎるのではないでしょうか?
30万強/日のアクセスがあるそうです。
平均 1万2千件/時となりますが、この場合 MaxClients は、
どれくらいがよろしいのでしょうか?
逆に、MaxClientsを越えてしまうと、どのような現象に
なるのでしょうか?
0014むぎ茶NGNG
mawasi
0015むぎ茶NGNG
mawasi
0016むぎ茶NGNG
mawasi
0017むぎ茶NGNG
mawasi
0018むぎ茶NGNG
mawasi
0019むぎ茶NGNG
mawasi
0020むぎ茶NGNG
mawasi
0021むぎ茶NGNG
mawasi
0022むぎ茶NGNG
mawasi
0023むぎ茶NGNG
mawasi
0024むぎ茶NGNG
mawasi
0025むぎ茶NGNG
mawasi
0026むぎ茶NGNG
mawasi
0027むぎ茶NGNG
mawasi
0028むぎ茶NGNG
mawasi
0029むぎ茶NGNG
mawasi
0030むぎ茶NGNG
mawasi
0031むぎ茶NGNG
mawasi
0032むぎ茶NGNG
mawasi
0033むぎ茶NGNG
mawasi
0034名無しさんNGNG
ipcs
0035名無しさんNGNG
すみません。しりとりスレッドと間違えました。(;;)
0036って優香NGNG
おっ!
ココにも、むぎ茶さんが来るようになったか。
メジャーになりましたね。(笑)
って優香、リンクを張られたら誰でも来れますが。。。

>34@`35
じゃぁ、「su」の「u」
って違うか。(笑)
0037名無しさんNGNG
カーネル再構築ですが、
FreeBSD 2.2.x系しか再構築した事ありません。
設定ファイル GENERICが無変更のままであれば、
kernel.genericと全く同じ物を再構築出来ますよね?

Linuxでは、どうなのでしょう。
あるパッケージで採用された verのカーネルバイナリと
ソースがあったとして、設定ファイルを全く変えないで
再構築したカーネルと元のカーネルと、全く同じ物を
作るには、どうしたら良いでしょう?
いきなり make oldconfigを実行すれば良いのでしょうか?

カーネルを再構築する練習をして、バイナリレベルでの
比較をして、O.K.なら、設定を変更してきたいのですけど。
0038>1NGNG
それっぽい話が先月か今月のUnixUserのルート訪問記に
出ていた気がします。
0039名無しさんNGNG
>38
root for monkeyね。(笑)
0040>1NGNG
すいません。今見てみたら大した情報なかったです。
/usr/src/linux/include/linuxI にある
posix_types.hとtasks.hをいじると同時に開けるファイル
数とプロセス数が変わるそうです。
0041ひろゆきNGNG
いやぁ、、やっと乗り気になったところで、
テスト期間突入です。。
>posix_types.hとtasks.hをいじると同時に開けるファイル
>数とプロセス数が変わるそうです。
ここをいじって再構築でOKな感じですね。
ご助言感謝です。デスクトップで試してみますです。  テストがおわったら、、、、、
00428NGNG
>平均 1万2千件/時となりますが、この場合 MaxClients は、
>どれくらいがよろしいのでしょうか?

MaxClientsは最大同時接続数です。
これはクライアントへHTMLを送信するスループットに関わるので
一概にこのヒット数だからこの数値とは言えませんが、
経験上100〜200で十分ではないかと思います。

この例よりずっと高負荷なapacheを運用してますけど
ピーク時でも200超えることすらありません。
この程度にしておけば、CGIでもプロセス数の最大値に
到達することは無いはずです。
(CGIからさらに子プロセスを作っていなければの話)

つづく
00438NGNG
しかしCGIの動作が遅い場合ピーク時にはCPU能力が先に飽和してしまい、
上記の話どころではない場合もあります。

飽和しているのにいくら最大プロセス数を大きくしても、よりたくさんの
プロセスが動いてしまってより遅くなるだけ、ということになりかねません。
MaxClientsを絞ればすくなくともエラーにはならないはずです。

秒何アクセスで飽和するかは、どれだけCPU時間を使っているか調べればわかります。
CGIをシェルからテスト動作させてtimeコマンドでCPU時間を計ってみるとか、
perlの中からならtimesを使って調べることも出来ます。
それが例えば処理が終るまでに0.1秒だとすると、
秒10アクセスで飽和するわけです。(1CPUの場合)
この状態のロード(uptimeなどで表示できるもの)が1となります。
これを超えるとスループットがさがっていきます。

CGIのスループットがさがると送信が完了するまで時間がかかるようになり、
こうなると同じ頻度のアクセスでも同時接続数があがっていきます。
apacheの場合MaxClientsを大きくとりすぎていると
プロセス数等の問題が発生してくるわけです。

webの場合は深刻で、何秒もまたされるようになると
リロードされたりするのでさらに状況を悪化させます。

定性的な話をしましたが、定量的には待ち行列などで算出できます。
けど仕事でも経験をあわせて定性的に設計したりしてますけどね。

打開するためにはCGIの速度をあげるか、複数サーバに分散させるか、
ということになりますが、状況を悪化させないための方法として
ロードがある一定値を超えている場合はCGIの実行を中止するように
プログラムする、という方法があります。
0044ひろゆきNGNG
実は、エラーがではじめたのは、
apacheのMaxClientsを256にかえてからなんです。
スワップになってないのに、接続ができないので
変だなぁとおもって256までふやしたんですが、
プロセスが増えすぎて500エラーがでるようになってしまって、、、はぁ、、、
0045長文失礼NGNG
> 8
> この例よりずっと高負荷なapacheを運用してますけど
2chより高負荷って、バーチャルドメインのサービスを
してる関係の方かな?

> CGIからさらに子プロセスを作っていなければの話
あんまり、folkやexecはしないだろうケド、
コマンド一個起動すれば、それで1プロセス増えるのでは?
まぁコマンドが終了すれば消えますが、同時にアクセスされれば
重なりそうですね。
(Linuxデフォルトの MAX 512プロセスを超えるかどうかは?)

> すくなくともエラーにはならないはずです。
こっちの方が大事でしょう。
テレホ時間 23:00 - 2:00 にアクセスが多いのは、
どこでもあたりまえだし、
「あっ、どっかで荒らしが来て負荷高いのかな?」
って思うくらいで済む時あるし。

> 複数サーバに分散させるか、
2ch@` ohayou@` jbbsがありますね。
確か、jbbsが一番 PCの性能が高かった気がします。
更にサーバー増やして(メモリ・CPUの増強含め)と言われても
資金面があるでしょうし。
ましてやレンタルサーバーなら、勝手に増強出来ないですしね。

> CGIの速度をあげるか、
原則的に、ひろゆき氏がソース非公開としていれば、
CGI@` プログラミングのプロも、手を出せないでしょう。

> ロードがある一定値を超えている場合は CGIの実行を中止
これって、中止された場合、
読みだけの人や、書き込もうとした人には、どう見えるのですか?
もし「しばらく、お待ちください。もう一度。」
と出るだけなら、error表示とあまり変わらないですね。
待った後に、リクエストは処理されるのでしょうか?
00468NGNG
> スワップになってないのに、接続ができないので
> 変だなぁとおもって256までふやしたんですが、

たぶん原因は応答の時間のかかるCGIによって
apacheのスロットがうめつくされていることによると思います。
メモリとかスワップよりもCPU能力でしょうね。
こうなるとこのCGIの応答時間は長くなり、
空きスロットも無いので接続もできないという状況になるはず。


> あんまり、folkやexecはしないだろうケド、
> コマンド一個起動すれば、それで1プロセス増えるのでは?
> まぁコマンドが終了すれば消えますが、同時にアクセスされれば重なりそうですね。
> (Linuxデフォルトの MAX 512プロセスを超えるかどうかは?)

うーん、なんか論点がずれてっちゃう。
言いたかったのは、apacheおMaxClientsを例えば100に設定しておけば、
100個のスロットが全部CGIだとしてもプロセス数は200個です。
ただし、CGIから子プロセスを起動しない限り。
最大プロセス数(たしかユーザ毎256だったはず)を超えず、
そういうエラーはでないといことです。

しかしいずれにせよ応答の時間がかかるCGIによってapacheのスロットが
埋め尽くされている状態では、ぜんぜんつながらないということになるでしょう。

> これって、中止された場合、読みだけの人や、書き込もうとした人には、どう見えるのですか?

読みこみは中止せずに書き込みだけ中止するとかね。

> もし「しばらく、お待ちください。もう一度。」
> と出るだけなら、error表示とあまり変わらないですね。

ユーザにとってはかわらないですね。
しかし無為にロードをあげずにすむのでメリットはあります。
perlだと起動するだけで結構CPU時間をくうので、焼け石に水かもしれませんが。

打開策は前述のとおりですが、もうひとつ思いつきました。
Linuxの最大プロセス数とapacheのMaxClientsとタイムアウトを大きくして
延々と待たせるとか・・・根本的ではないですが。
004737NGNG
jbbsの、という関連ではありませんが、スレッドタイトル通りと
言うことで結果報告です。

出来ませんでした。
LASER5 linux 6.0@` kernel 2.2.5です。
って、これは slackwareじゃないですケド。。。(笑)

$ make oldconfig; make dep; make clean; make bzImage
で出来た vmlinuxは、サイズが大きくなってしまいました。

System.mapの比較では、
get_optionsと cpu_idleから 4Byte ズレはじめたのと、
math_emulateが追加された事。
probe_irq_on/..._offからまたズレはじめて。。。
となってしまいました。

コンパイルした環境とかでも差が出るんでしょうか?
それともデリストリビューターが構築した時の
./scripts/Configure は、残されて無いモンなのでしょうか?
0048Mandrake使いNGNG
> 37
LASER5 なら kernel-ver-rel.src.rpm (ver@` rel にはバージョン番号と
リリース番号が入る) というのがあるので、それを
# rpm --rebuild kernel-ver-rel.src.rpm
というふうにすればいいです。(root でないとだめ)

> ./scripts/Configure は、
うちの Mandrake の kernel-2.2.13-7mdk.src.rpm の中には
kernel-2.2-i586.config というファイルがあります。
リビルドするときは
# cp kernel-2.2-i586.config arch/i386/defconfig
# ln -s arch/i386/defconfig .config
# make oldconfig
みたいなことをやってます。詳しくは SPEC ファイルを見て下さい。

RPM でのリビルドは
http://www.ns.musashi-tech.ac.jp/~inoue/Pages/Linux/rpm-packaging.howto.html
を参考にして下さい。
004937NGNG
あ、情報ありがとうございます。> 48

rpmでも再構築出来るのですね。今度 2.2.13(14が出てるのか?)に
あげる機会があったら、そっちでチャレンジしてみます。
(ここでslackwareは、どうなのかな?と、再び。^^;)

で LASER5は、/usr/src/linuxが /usr/src/linux-2.2.5への
シンボリックリンクとなっており、defconfigのタイムスタンプは
09/03/99なので、今回のわたしは純なカーネルが出来たのかな?

一応 /usr/src/redhat ってのもあるんですが、空なんですよ。
CD-ROMの中の lernel-ver-rel.src.rpmを探してみます。
(CD-ROMが、どこ行っちゃったかから探すんですけど。(^^;))
それとも LASER5から、千円で買わないといけないのな?

他のディストリビューションの方は、どうなのですか?
0050ひろゆきNGNG
topで見ると、深夜の時間帯でも、CPUは50%も使われてなかったです。
HDDがIDEなので、ファイルを開いたりという物理的操作に
時間をくって、同時に開けるファイル数をオーバーして、
internalserverエラーになってたようです。
今回のログ飛びで、HDDを変えたので、、カーネルもかえたのかなぁ?
昨日は、500エラーがなかったんですが、、
今夜はどうでしょう、、様子見です。
0051名無しさんNGNG
2chみたいなWebサーバって以外とCPUは全然使わないもの
なんですね。メモリが一番の重いボトルネックになってるのかな?
00528NGNG
>51
そんなことは無いです。場合によりけりです。
Perl使ったCGIの場合、CPUがネックになることのほうが
多いと思いますが・・・

メモリがネックになっているならスワップしまくっているはずです。
CPUが原因ならロードが大きくなっているはずです。

IDEとのことなので、ディスクIOがネックになっているのかなあ。
カーネルのバージョンはいくつだったんだろう。
けどIDEのディスクそのものは最近のは速いし、
LinuxもDMAに対応しているからなあ。
ディスクが原因とも思えないんだけど・・・

あとはCGIの作りがタコすぎるというのも考えられますが。
0053名無しさんNGNG
2@` 38さんの書いてる記事を読みました。
確かに、Linuxのデフォルトだと、
サーバーとしてのネットワーク性能が...
と、ありましたから、jbbsの /usr/src/*linux*/include/linux
を覗いてみては?(残してるかな?)
NR_TASKS 512@` __FD_SETSIZE 1024がデフォルトなので、
それより多ければ、AT-LINK側でカスタマイズしたのでしょう。

変わらなければ、HDDの性能差なんですかねぇ。。。
0054ひろゆきNGNG
#define NR_TASKS 512
512のままでしたー(^^;)
0055ひろゆきNGNG
perlではたいした処理はしてないので、CPU負荷はひくいようです。
ただ、index2.htmlの生成に、20個のファイルをよまなきゃいけないので、
HDDの物理的なアクセスにかかる時間がかかってしまいます。
んで、メモリがたりなくなってswapというのが、2ch.netの重くなる
パターンです。2ch.netの掲示板をjbbsに移転していけば、
少しはマシになるのでは?とたくらんでます。。。
0056レンタルサーバーNGNG
AT-LINK側は、あんまり Linux(PC-UNIX)に強くなさそうだね。
9をみると、「Linuxで初期設定で動作可能なプロセス数を超えて」
とか言ってたみたいだけど、特に何もしてないみたいだから。
(ただ、ほとんどの過去ログを戻してくれたのは、すばらしいかも。
 オプションのバックアップを頼んでいたわけでは無いんでしょ?
>ひろゆき氏)

UNIXUSERに載っていたのは、kubotaのバーチャルドメイン・サービスを
始めた人達だったんだね。PC UNIXをサーバーとして使う為のスキルは
AT-LINKより上そうだ。

ただ両者の料金体系だけみると AT-LINK破格かも。
http://www.at-link.ad.jp/rss/s05.html
http://www.ksi.ne.jp/

ハード/OSを安く用意して、自分でイジり倒していくのが良いか、
そこは、プロに任せるか。。。
趣味なら前者、企業とかでWEBサイトを立ち上げたいとかなら後者、
なのかな?
0057ひろゆきNGNG
バックアップはたのんでません。
だから、ログ復帰してくれたのは嬉しいですね。
まぁ、契約一ヶ月でHDD飛ぶってのもやばいきもしますが、、、
ksiってとこが高いだけかも(^^;;;;;

0058名無しさんNGNG
> ただ、index2.htmlの生成に、20個のファイルをよまなきゃいけないので
どういう風に読んでます?
まず一つ一つクローズしてるかどうか。
20個同時に開いたらあっというまに
ファイルオープン数の上限に達してしまいます。

全データメモリに格納しているかどうか。
@array=<FD>;
とかやってないですよね。

どういうデータ構造になっているかわからないのでなんとも言えませんが、
dbmを使ってみるといいかもしれません。
0059ひろゆきNGNG
一個づつ、読んで、closeしてます。
whileで、一個づつ処理してるんですが、
それでも、大変みたいです。
靴屋のスミスさんのアイデアなんですが、
レスの後半10個だけのファイルをつくっておいて、
index2.htmlをつくるときは、それを読み出すだけってすれば、
だいぶ、処理が軽くなるとおもうです。
0060名無しさんNGNG
テレホ時間帯に人気のある板は、TOP10スレッドに減らすとか。
今更システム(使い勝手とかの意味)を変えるのは、ちょっと苦しいか。
0061名無しさんNGNG
最近、2chでも Internal Server Errorが出始めたみたいですねぇ。。。
0062ひろゆきNGNG
靴墨さんのアイデアの新・スクリプトを稼働させました。
今夜が楽しみです。
劇的に減るのかなぁ、、、あんまりかわらなかったりして、、、
0063>61NGNG
あ〜ちなみに、ここって1ディレクトリに何個くらいファイル
ぶちまけてる?
0064>63NGNG
スレッド数の分だけファイルがあるんじゃないんすか?
0065ひろゆきNGNG
http://www.2ch.net/unix/dat/
これでみれますよん。スレッドの数だけあります。
006658NGNG
ホントにIPとってないんですね。
データファイルが見られるとは。その姿勢、感服いたしました。

やはりdbm系をうまく使うと速くなるのでは・・・
逆順にするのに大量にメモリ消費してますよね?

あとですね、63いっているように大量のファイルを
同じディレクトリに置くとファイルの検索がかなり遅くなります。
ディレクトリ分割しましょう。

0067>ひろゆき&66NGNG
IP取らない管理方針に賛成。
理由:UGの精神と言論の自由が守れるし、反権力姿勢を示すことで
人がわんさか寄って来るので盛り上がって嬉しい。

0068>65NGNG
ん〜こんくらいの数ならば問題ないかなぁ。
1ディレクトリのファイル数がやっためたらと増えると
そのサーチだけでも時間食うから。
0069UNIX USERNGNG
本屋にあったので読んでみた<バーチャルドメインの記事

・・・参考にならなかった。
あの記事の要点ってどこにあるんだろ?
誰かぉιぇτ〜
0070要約するとNGNG
既に2月号が発売されてたと思いますが。
>69
1月号のバックナンバーを読んだのでしょうか?
あの記事、よしだともこの「ルート訪問記」では、
Linuxを使った大規模サーバーを構築した KSIの人達への
インタビューです。

彼らは、元々 FreeBSDを使って、大規模サーバーを構築した事が
あったので、そのノウ・ハウを、今回の Linuxにも適用しました。
Linuxのネットワーク周りのチューニングを、いろいろしました。

そのノウ・ハウとしての例としては、
tasks.hでプロセス数を大きくしたり、
posix_type.hでオープン出来る数を増やしたり、...です。FreeBSDなら設定ファイルの一部を変更するだけで、
全てのパラメータが変わるのに、Linuxでは、どこをどうやって
変更したら良いか?と、いったドキュメントが、
まとめられて無いので苦労しました。

だったと思います。
0071って優香@久しぶり(笑)NGNG
数週間前 2ch要望・批判を見ていたら、
深夜 jbbsでの Internal Server Errorについて、ひろゆき氏の
「サーバ会社のat-link側から、
『Linuxで初期設定で動作可能なプロセス数を超えてしまっているため』
と回答された。」というレスを読みました。

70さんの通り、UNIXUSERに、そのような記事が載ってたので、
情報を集めてから、ひろゆき氏が再構築してみては?
と、レスしたんです。

わたしは、PC UNIXについて詳しくないので、
この UNIX板なら、詳しい方々が見てないかな?と思ったのです。

で、結局 Linux側の設定がエラーの根本原因では無かったように、
見受けられますね。
0072名無しさんNGNG
71> で、結局 Linux側の設定がエラーの根本原因では無かったように、

そうでしょうか?
あの記事は、『Linuxを使って』大規模サーバーを構築した人達(KSI)
へのインタビューで、KSIのバーチャルドメイン・サービスの商品名は、
「ファーストサーバー」だそうです。

つまり、
「デフォルトの Linuxでは、昔のPCスペックに合わせてあるので、
大規模サーバーとしては、ネットワーク周りのチューニングが必要。」
と読みました。

それ用にチューニングする事で商売をしている方たちなので、
記事に載っていたチューニング方法が、全てではないのでは?

ここ暫く収まっていたみたいですが、今日 jbbsは出始めましたねぇ。
0073名無しさんNGNG
apacheにmod_perlを組み込むというのは対策になりますでしょうか...?
既にやってる&大外しだったら申し訳ありません。
0074ひろゆきNGNG
apacheのmod_perlは今度やってみます。
実は、丁度いま、apacheのチューニングをしました。
どうやら、うまくいったようなので、今度はmod_perlに挑戦ですね。
MAXclientが256だったんですが、httpd.hをいじってコンパイルしなおして、
MAXclientsを500にかえました。これで、深夜の時間のhtmlを表示する
待ち時間は減ったかと、、次は、インターナルサーバエラーを潰すために、
カーネルですね。。ちょっとびびってます。。
007573NGNG
今回の問題は過去記事にもあるように、
apacheとカーネルのチューニングで待ち受けの窓を増やす、
というのがとりあえずの解決方法みたいですね。
mod_perlの導入は、ひょっとしたら大仕事になるかも知れません。
書いておいてなんですが(^^;
(雑誌で見かけたのでちょっと書いてみただけなんです(^^;))
頑張ってください。
0076ひろゆきNGNG
はいー、apachのチューニングは失敗したら、
ふるいのを立ち上げなおすだけなんですが、
カーネルは、未知なので、びびってまーっす。
0077名無しさんNGNG
> MAXclientsを500にかえました。

えっ・・・それで状況改善されました? (^_^;;;
にわかには信じがたいのですが・・・
0078改善はNGNG
カーネルのチューンが終わって初めて効果が見えるのでは?
apacheで受付プロセスを増やして、
カーネルチューニングでプロセスの受け皿を増やす、
ってことですよね?
0079名無しさんNGNG
jbbsが。(;_;)/~シクシク

>ひろゆきさん
頑張ってください。
0080ひろゆきNGNG
そんなこんなで、jbbsのメモリを増やしたとたんに、
不安定になったようです。。いま落ちてます(;;)
0081んがぁNGNG
77さんに同感

一度ちゃんとプロファイルした方がいいです。Linuxって何か
そういうツールありましたっけ?vmstatくらい?

apacheのクライアント数が足りない場合は単に蹴られるだけ
なので、今のような状況にはならないと思うんですが・・・
0082NGNG
Free Solairs7は非商用利用のみOKですがFree Solaris8は
商用利用もOKになりそうです。Linuxでクラスタ化するのでもなければ
Solaris8をただで取って使ったほうが信頼性もパフォーマンスも
高いと思います。うまくいくかこればかりはやってみなければわからないし
まじめに使う(?)ならsunsolveの非公開パッチも欲しいし
パッチアクセス以外に技術サポートを買ったほうがいいのかも知れませんが。

memory不足で問題があったんですか>jbbs
とにかくIOを稼がないと大量のプロセスを走らせるようにしても
足回りに限界がきちゃうと思います。
0083>駒NGNG
レンタルサーバーのOSごと入れ替えちゃうのは、辛いでしょう。

>とにかくIOを稼がないと
具体的に?
0084名無しさんNGNG
今晩は調子良いね。
昼間落ちてたみたいだから、何かしたのかな? > jbbs
0085名無しさんNGNG
今晩はメッチャ調子良いです!
2chの方が何かと。。。
0086ひろゆきNGNG
増設したメモリはずして、安定しました。。。
をいをい。。
0087名無しさんNGNG
ハウジングだと、いろいろ大変そうですね
かといって太い線高いしね・・・
0088>87NGNG
2chは文字主体だから、1.5Mもあれば十分じゃないかな?
計測してみることをお勧めします。

って、1.5Mも高いですか・・・
0089ひろゆきNGNG
index2.htmlが70kぐらいあるので、100kとして単純計算で、
150人でうまっちゃいます。テレホ時間帯はサーバのコネクションが
600以上になるので、、、
0090>89NGNG
あ、それはその程度でいいかもです。常にフルスピード
を出そうとするとC/Pがめちゃくちゃ悪くなります。もし
その速度を満たそうとすると、6Mの回線が要りますが、
6Mを入れたとしても昼間は遊んじゃいますからね。仮に
夜間同時コネクション数が600あったとしても、それら
のコネクションが同時にindex2.htmlを読みこんでいる
わけではなく、仮にその状態でも1:4なので、ユーザか
ら見た場合には回線の遅さは感じないでしょう。HTML
みたいな文字系だったら1:4より上げても大丈夫だと
思いますが。
0091名無しさんNGNG
何メガ増設したのか知りませんが、OSが増設したメモリ分をきちんと
認識しなかったとか?
0092うーんNGNG
> index2.htmlが70kぐらいあるので、100kとして単純計算で、
> 150人でうまっちゃいます。

その計算は、いろんな意味で違いますよ。
一人あたり100kbps出るわけじゃないでしょ?
それにアクセスを考えるなら待ち行列を考えないと。

このへんはネットワーク技術者なら常識ですし、
どんな本にも載ってます、勉強してください。

帯域についてだけ考えてみても、
一人あたり20kbps出るとして、1500kbpsあれば、
計算上は75人同時接続することができます。


> テレホ時間帯はサーバのコネクションが600以上になるので、、、

これが問題だと思います。
たくさんのアクセスがあるから600以上になるのではなく、
CGIが重すぎだから600以上になっているんです。
それなりに軽ければ秒20アクセスあったとしても、
そこまではの同時接続をサポートする必要はないと思いますね。

サーバ能力的にさばけるクライアント数は決まってきます。
それ以上の接続をうけつけても状況は悪くなるだけですよ。

個人的にはこれをきいて、
もうハードの増強でなんとかなる問題じゃないと判断します。
もっと分散できれば良いけど、それはコストもかかるでしょうしね。
0093名無しさんNGNG
92> もっと分散できれば良いけど、

要望・批判板を見てましたが、一部kitanetに移動したみたいですね。
これで快適になるなら、いかにあの板に集まる住民が多かった事か。。。
0094名無しさんNGNG
バナー広告入れて資金面アップしたのかな?
jbbsは、とっても調子良いのですが、我らUNIX板のある2chの方で、
最近以下のエラーが多くなりました。
これって具体的に、どんな事が起きてるのでしょうか?
もう一度トライして事無きを得ているのですが。

ERROR
The requested URL could not be retrieved
--------------------------------------------------------------------------------While trying to retrieve the URL: http://www.2ch.net/test/bbs.cgi
The following error was encountered:

Read Error
The system returned:
  (54) Connection reset by peer
An error condition occurred while reading data from the network. Please retry your request.
0095名無しさんNGNG
これってプロクシサーバがいってるんじゃないですか?
0096ひろゆきNGNG
>たくさんのアクセスがあるから600以上になるのではなく、
>CGIが重すぎだから600以上になっているんです。
cgi自体の重さではなく、HDDにアクセスする時間の蓄積だと思います。
CPUはアイドルだったりするのですが、bbs.cgiで20個のファイルを
順次開け閉めするわけですから、その物理的時間の積み重ねで、
反応がとろくなってきてると思います。
ひとりひとりの回線速度ってよくかんがえたら、そんなにたかくないですよね。
それと、CGIを利用するのは10から20アクセスで後は全部httpdなんですよね。
夜中のjbbsの状況


009792NGNG
> これってプロクシサーバがいってるんじゃないですか?
それっぽいですね。

> cgi自体の重さではなく、HDDにアクセスする時間の蓄積だと思います。
って、同じことです。
プログラム的にHDDアクセスを最大限減らしているわけではないでしょう。
0098ひろゆきNGNG
>プログラム的にHDDアクセスを最大限減らしているわけではないでしょう
構造上、ファイルを読むのは減らせないとおもうんですが、、
データベースにすると、ログのやりとりがめんどいですし、
オフラインリーダーがつかえなくなってしまいますし。。

37さんと同じなんですが、設定ファイルを全く変えないでカーネルをつくるには
どうしたらいいでしょうか?
make oldconfigでやってもmake zliloでエラーがでてしまいました。


0099むーNGNG
いつも2ちゃんねるであそばせてもらってて感謝してます。
所詮鯖管理者もどきですが Apache のチューンで意見をすこし。

Apache の MaxClients は 150 もあれば十分ではないかと思います
I/O がボトルネックなら MaxClients が 150 だろうと 512 だろうと
差はないですし。むしろ MaxClients を増やすことにより
クライアントの増加に応じて Apache が fork し、メモリが
奪われるのでより悪くなるでしょう(これについては他の方も述べられていますが)
しかも悲惨なことに fork した Apache はメモリを抱え込んだまま
なにをするわけでもなくただ I/O 待ちをするだけ、
本来ならディスクキャッシュに割り当てられ、disk I/O 性能を
向上させるはずのメモリが無駄に浪費されるだけです。

もし仮に MaxClients を制限したことによりつなげなくなった
client はスロットがあくか timeout するまで待つだけですので
サーバリソースの浪費は押さえられると思うのですが・・・(ちと弱気)

というか sar とか動かしてますでしょうか?
file I/O や idle などの統計的な情報を時系列に沿って
まとめてくれる便利なツールです。
(Linux にはなかったかも(汗;;;))
あと、SpareServers の値も気になります。
もしよかったらお教えくください。でわ。
010092NGNG
>>プログラム的にHDDアクセスを最大限減らしているわけではないでしょう
>構造上、ファイルを読むのは減らせないとおもうんですが、、
データ形式とか構造、よく吟味しましたか?

>本来ならディスクキャッシュに割り当てられ、disk I/O 性能を
>向上させるはずのメモリが無駄に浪費されるだけです。

そうですね。
apacheのプロセスだけでメモリ食いつぶしている状況はよくないですね。
apacheの要らないモジュールはずしまくるというのも良いかも。
高速化と省メモリ化になります。

>あと、SpareServers の値も気になります。
>もしよかったらお教えくください。でわ。

apacheの子サーバをどういうふうに扱うかによりますね。
0101ひろゆきNGNG
Timeout 30 MinSpareServers 5 MaxSpareServers 10 MaxClients 500
あとは、デフォルトです。
メモリが384Mなので、メモリスワップもおきなくなりました。
いつも物理メモリが余るようになったのですが、クライアントは
減らした方がいいんでしょうか?
いらないモジュールのはずし方もよくわかってないもので、、、
0102ひろゆきNGNG
カーネル再構築をしたのですが。。。エラーがでちゃいました。
ools/build bootsect setup compressed/vmlinux.out CURRENT > zImage
Root device is (3@` 1)
Boot sector 512 bytes.
Setup is 1268 bytes.
System is 529 kB
System is too big. Try using bzImage or modules.
make[1]: *** [zImage] Error 1
make[1]: Leaving directory `/usr/src/linux/arch/i386/boot'
make: *** [zImage] Error 2
bzImageでコンパイルすると、小さくなるということでしょうか?
それで支障がでたりというのはないんでしょうか?
質問ばかりですいません。
0103> 102NGNG
make bzImage でできるのはブート可能なでかいイメージです。
小さくはなりません。
zImage と比較して欠点があるというわけでもないはずです。

0104ひろゆきNGNG
bzImageのコンパイルができたのですが、
これをそのまま/bootにいれて、lilo.confで読み出すように
設定していいんでしょうか?
zImageとbzImageの違いってなんなのでしょうか?
0105Mandrake使いNGNG
> これをそのまま/bootにいれて、lilo.confで読み出すように
> 設定していいんでしょうか?
それでいいんです。

> zImageとbzImageの違いってなんなのでしょうか?
512kB を越える巨大(BIG)なカーネルイメージがブート可能かそうでないか
の違いです。

/usr/src/linux/arch/i386/boot/Makefile を読むと、
bzImage でコンパイルオプションに -D__BIG_KERNEL__
がつくようになってます。

ソースの違いはたったこれだけ。

/usr/src/linux/arch/i386/boot/bootsect.S
269 #ifdef __BIG_KERNEL__
270 #define CALL_HIGHLOAD_KLUDGE .word 0x1eff@`0x220 ! call far * bootsect_kludge
271 ! NOTE: as86 can't assemble this
272 CALL_HIGHLOAD_KLUDGE ! this is within setup.S
273 #else
274 mov ax@`es
275 sub ax@`#SYSSEG
276 #endif

/usr/src/linux/arch/i386/boot/setup.S
93 #ifndef __BIG_KERNEL__
94 .byte 0x00
95 #else
96 .byte LOADED_HIGH
97 #endif
107 #ifndef __BIG_KERNEL__
108 .long 0x1000 ! 0x1000 = default for zImage
109 #else
110 .long 0x100000 ! 0x100000 = default for big kernel
111 #endif

0106ひろゆきNGNG
ありがとうございます。lilo.confを変えて、、立ち上がらなかったら、、
いくらか取られるのかなぁ、、、ドキドキ>at-link
ところで、http://www.osk.3web.ne.jp/~modelerq/linux/kernel.htm
ここのページだと、make modules、make modules_installというのも
やってますが、これも必要なんでしょうか?
0107>105NGNG
> > zImageとbzImageの違いってなんなのでしょうか?
> 512kB を越える巨大(BIG)なカーネルイメージがブート可能か
> そうでないかの違いです。
ハッ!てっきり、gzipで圧縮するかbzip2で圧縮するか?
だと思ってました。お恥ずかしい。。。(^^ゞ

>106
んー、、、こちらを良く読まれてからトライした方が良いかと。
http://www.linux.or.jp/JF/JFdocs/Kernel-HOWTO.html

0108Mandrake使いNGNG
> ハッ!てっきり、gzipで圧縮するかbzip2で圧縮するか?
> だと思ってました。お恥ずかしい。。。(^^ゞ
じつわ 103 を読むまで私もそう思い込んでました。
で、ソースをみて __BIG_KERNEL__ の記述を見付けたのでした。
$ find /usr/src/linux -name Makefile | xargs grep bzImage
でソースをたどりました。

> 106
> lilo.confを変えて、、立ち上がらなかったら、、
私は新しくカーネルをコンパイルしたら、lilo.conf を
image=/boot/vmlinuz-new
label=linux
root=/dev/hda2
read-only
image=/boot/vmlinuz-old
label=linux_old
root=/dev/hda2
read-only
みたいに lilo で linux_old と打つと古いカーネルで
起動できるようにしてます。
010999NGNG
>107
>gzipで圧縮するかbzip2で圧縮するか? だと思ってました。
同じく。bzip2の方が圧縮率が高いからおっきいカーネルも
ブートできるのかなぁとか。PC-UNIX はよくわかってない(^^;;

>101
お答えいただきありがとうございます。
>MinSpareServers 5 MaxSpareServers 10
これはかなり悲しい設定です。
せめて MinSpareServers 15 maxSpareServers 40
くらいは必要かと思います。Apache が fork して子 Apache を
生み出す速さは1秒に1つですので、スペアサーバがあまりに
少ないとアクセスの急峻な増加に立ち後れてしまいます。
余分に多くしてもメモリの無駄になりますけれども。

また、Apache 1プロセスが実メモリを 1.3MB くらいずつ消費する
ようなので、384MB のメモリで最大 500 の子 Apache を養うのは
無理があるように思えます。Apache 自身が swapout されてしまいます。
(OS によって Apache のメモリ消費量にも差があると思うので
詳しくは top コマンドで表示される RES もしくは RSS の値を
参考にしてください。)

では、今後とも快適な2ちゃんねるであることを願いつつ。
011099NGNG
あう、Apache 1プロセスはそんなにメモリ食わないようですね。
ウソ書いてしまったです。すみません。
150個起動していても 27MB くらいでした。
これはこれでなんか嘘臭い気が・・・(^^;
0111名無しさんNGNG
モジュールはずして小さくしても1プロセス1MBくらいだろう。
普通は2MB弱くらいじゃないか。

MaxClients大きくし過ぎだって、最初のほうからでてるのに・・・

0112ひろゆきNGNG
Maxcilentsを350に減らしてみました。
MinSpareServers 15 maxSpareServers 40 に変更しました。
メモリスワップがなくなってるので、mod_perlを入れて、
perlの起動がなくなればなぁ、とおもいつつ、びびってます。。
0113mod_perlNGNG
焼け石に水のような気がしないでもない。

というのは、perlの起動までにかかる時間を調べてみればわかる。
それがperlスクリプト実行終了までの全体の半分を占めるなら
パフォーマンスは約2倍になるだろうが・・・

もともとperlの起動にかかる時間の占める割合が小さいなら
焼け石に水、ってことになるわけ。

それにmod_perlいれると、1プロセスが大きくなる。
0114実験くんNGNG
>113
実験してみるのも良いのでは?
0115>114NGNG
実験するにはコケたときの影響がでかい気もするけど(苦笑)
0116ひろゆきNGNG
あいたたた、、(;;)
0117だからさNGNG
まず実行時間を計測してみようよ・・・
0118>117NGNG
Perl起動の時間って、どうやって計るの?
スクリプトを実行する時に

$ time perl hoge.cgi
って計ったのと、

$ cat hoge.cgi

#!/usr/local/bin/perl
# この直後に時間表示

.. 処理 ..

# この直前に時間表示。
# 最後

ってやって、差分を取るのかな?
0119名無しさんNGNG
今日のjbbs.netなんとなく快適。
効果が現れた?
それともただの気のせいだろうか。
0120Just Another Perl UserNGNG
/usr/bin/time perl -e "" とか。
0121117NGNG
>120
Oh!そうか。素で計れば計れば良いのね。

それと hoge.cgiって実行権付ければ良かったのね。。。
お恥ずかしい。(^^;;;

ところで、"Just Another Perl User"さん良く見かけるけど、
もう1つのPerlって、なぁに?7月だっけ?
0122Just Another Perl UserNGNG
単に、Randal L. Schwartz の署名 "Just another perl hacker"
をもじって "Just Another Perl User" です。

# "Another" は User にかかっている。
0123117NGNG
>120
それじゃあだめっす。まだuserだもんね ^^;
なんでかというとコンパイル時間が含まれていないから。
小さいのなら良いけどね。

解答はこう。

計測したいプログラムの先頭でtimesをやって、
最後でもtimesをやって、最後にでも表示すれば、
それが起動時間とプログラム全体の時間。

先頭でやるtimesをライブラリロードの後に行えば、
ライブラリロードにかかる時間もわかる。
これがまた結構時間食うんだ・・・

>121
この人はホントの117ではありません。
0124Just Another Perl UserNGNG
123:
「"perlの"起動にかかる時間」だからああ書いたんだけどな。
0125117NGNG
>124
けど、話の流れからしたら意味の無いものでしょ。

ところでmod_perlはライブラリ関係もキャッシュしてくれるのかな?
0126>117NGNG
で、話の流れからするに、今回のような CGIの場合、どうするの?
hoge.cgiの先頭が、
#!/usr/local/bin/perl

だったら、perlの起動時間ってどうやって図るの?
0127よいしょNGNG
こらしょ
0128よいこらNGNG
よいこら
0129ひろゆきNGNG
apacheのhostをlookupするのをやめたら、
ちょっとパフォーマンスあがりました。
22:00 pm: 27413 24 (0%): ###################
23:00 pm: 21768 8 (0%): ###############
24:00 pm: 0 0 (0%):
TOTAL 519871 214 (0%)
0130名無しさんNGNG
> apacheのhostをlookupするのをやめたら、

それって常識なんですけど・・・ ^^;

ついでにログをとるのをやめるとまたあがるでしょう。
0131名無しさんNGNG
ちょっと発見したので報告しときます。
>アクセス数が増えると、500エラーになってしまいます。
>改善方法として、カーネルをプロセス数の限度を変更して
>再構築するというものになるとおもうんですが、
ええっと、JF文書のファイアウォールの原文書いた人が
自分のページでWEBサーバーでストライピングやっちゃう
っていう文書を公開してますよん
0132名無しさんNGNG
今日発売のSoftwareDesignは
特集がカーネル再構築です。
内容は知らないけど。
0133BB >132NGNG
>今日発売のSoftwareDesignは特集がカーネル再構築です。
>内容は知らないけど。

「さあやってみよう!」系の記事なので、困っている人が参考になる
ようなものじゃありませんでしたよ。

それとどうでもいいことですが、個人的には、「Apacheの歴史」みた
いな記事が興味深かったです(買ってきちゃった)。

#SoftwareDesignはコラムが好き。
0134>129NGNG
>apacheのhostをlookupするのをやめたら
それって最近の Apache ではデフォルトの conf で
off になってますよね?
まさか on にしているとは・・・(^^;;;;;

SSI(Includes) 切るのと AllowOverride を必要最小限にするのも
パフォーマンスアップのコツですね。
あと、ログを別なディスクに吐くとか。
もうすでにやってたらすみません。
0135ひろゆきNGNG
ログもとめちゃいましたです。。
ログがでかすぎて、analogをつかってもタイムアウトしちゃうし、、
0136うんNGNG
あとはApacheコンパイル時にそのへん全部はずしちゃおう。

Configureの引数でできるよ。

0137>129、134NGNG
HostnameLookups は、めちゃめちゃパフォーマンスに関係するよ。
特に、クライアントがDNSに載ってないとき。
0138134>137NGNG
そーですそーです<めちゃめちゃパフォーマンスに関係する
だからデフォルトで off になってるし、
「off だとパフォーマンスがあがるよ」とも conf に書いてあるのです。
それなのに無視して on にしちゃいけませんですぜぇ>ひろゆき氏
DNS引きなんか平日昼間の暇なときにログ解析ツールにやらせるものです。
それにしても速さが自慢の analog がタイムアウトするなんて
よほどにすごいログ量なんですね。。。
毎日100万ヒットぐらいしてるんですかね(笑)
0139名無しさんNGNG
頑張って勉強してクレイ>ひろゆき
0140名無しさんNGNG
結局、この件はどう解決したのかな

最近は結構速いけど。

ディスクアクセスがネックらしいけど、
http://www.at-link.ad.jp/topics/t31.html
を見るに、5400rpmなんですね・・・

あとは、LinuxのデファルトはU−DMA
が有効になっていないんだけど、それが原因だったとかの
しょうもない
0141名無しさんNGNG
age
■ このスレッドは過去ログ倉庫に格納されています