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

slackwareのカーネル再構築

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