2chのサーバとしてFreeBSDを採用してみる例
1 名前: お遊びスレッド 投稿日: 2000/05/10(水) 00:06
FreeBSD 3.4-RELEASEを2chのサーバに採用することを考えてみましょう。
あなたならどうカスタマイズしますか?
カーネルの調整や/etc/以下のファイルの設定、
導入するpackage(もしくはports)など、自由に考えてみましょう。
条件: mod_perl込みのapacheを採用すること。




2 名前: とりあえず 投稿日: 2000/05/10(水) 00:31
chroot。


3 名前: ハードも決めておく 投稿日: 2000/05/10(水) 04:25
Celeron 433MHz
440BX
256M
8.4G IDE
3C905B-J-TX


4 名前: アルミサエル 投稿日: 2000/05/10(水) 08:21
まずはカーネルから?

いらんデバイスドライバ抜いて、SOFTUPDATE入れて、IDEにフラグ
0xf0ffたてて、maxusersは128、NMBCLUSTERSを8192とかにして。
DDB入れるならDDB_UNATTENDEDと一緒に。

とまあ、こんなとこでしょ。



5 名前: >4 投稿日: 2000/05/10(水) 09:45
0x4000の効能がいまいち分からないっす。
(自宅は0xb0ff。)


6 名前: 名無しさん 投稿日: 2000/05/10(水) 10:04
せめて、4.0-Releaseか4-Stableにしない?
5-currentなんで、わすれちゃった。


7 名前: 6 投稿日: 2000/05/10(水) 10:07
で、83.3MHzにOverclockして、
IDEのHDがQuantumnなら、そのまま
IBM,Fujitsu,Maxtorなら、

/etc/sysctl.confに
hw.atamodes=pio,---


8 名前: 6 投稿日: 2000/05/10(水) 10:10
UDMA66のdiskなら、pioにする必要無し


9 名前: 1 投稿日: 2000/05/10(水) 13:08
3.4を選んだのは、source treeの追っかけをやりたくなかったから。
なにせ2ちゃんねるのサーバですから。



10 名前: >5 投稿日: 2000/05/10(水) 21:37
0x4000はsleepから復帰した時に気絶したままにならないための
おまじないなんで、APM使わないなら(ってサーバーだから使わないか)
いらないっすね。
3.4選んで正解。なぜならうちも3.4-STABLEだし


11 名前: ひろゆき 投稿日: 2000/05/12(金) 08:57
tako.2ch.netは、freeBSDですよん。
メモリが64Mなので、mod_perl化はしないとおもいます。
www.2ch.netはメモリ64Mなんですが、
mod_perl化したところ、メモリ不足により、スワップが起きてしまい、
パフォーマンスがおちちゃいましたですです。



12 名前: 6,7,8 > 11 投稿日: 2000/05/12(金) 09:41
inndを上げれば?
更に、News-ArticleをCPANから持って来る



13 名前: >12 投稿日: 2000/05/13(土) 01:19
勉強不足でスミマセン。
掲示版である 2ch と innd (NewsServer?) の関係が判りまっせん。
CPAN についてもチンプンカンプンです。
http://ring.etl.go.jp/pub/lang/perl/CPAN/modules/by-category/11_String_Lang_Text_Proc/Text/JONO/CPAN.html

innd, FreeBSD は必須なんでしょうか?
どれくらいのパフォーマンスアップが期待できるのでしょうか?

確かに最近 www.2ch.net が重く感じてるので、
どのような効果が現れるのか解説願えませんか?


14 名前: >13 投稿日: 2000/05/13(土) 06:25
>掲示版である 2ch と innd (NewsServer?) の関係が判りまっせん。
普通の掲示版だった、そんなものは資源の無駄でしょうが、ここまで
でかくなると、普通ではないわけで...

で、
news serverとしてではなく、膨大なarticle
を管理させる為にinndを使って、(altとかメチャメチャな投稿量を管理配送
しているのだから)それを、httpとのinterface
のためにCGIとして、CPANから、NNTP関係
のモジュールを持って来る。(MewのNNTPは使い回ししやすいのかどうかは?)

http://ring.etl.go.jp/pub/lang/perl/CPAN/modules/by-category/19_Mail_and_Usenet_News/News/

>innd, FreeBSD は必須なんでしょうか?
それは、OSは関係ないでしょう。
inndも、(今更,Cnewsでもないけど)必須ではないでしょう。

>どれくらいのパフォーマンスアップが期待できるのでしょうか?

どこか、無料掲示版がやってそうだけど、(mod_newsとか作って)
定量的なものはわからないですね。;-P

ただ、メリットは、確実にあります。自動アーカイブ機能とか...とか



15 名前: 14 投稿日: 2000/05/13(土) 06:37
但し、同一マシン(除くSMP)で、やると、apacheがバンバンforkしている状態では
ますますswap増やすだけ鴨

まずは、apache,perlをstatic linkのものに変えてみるだけでも効果ある鴨



16 名前: 14 投稿日: 2000/05/13(土) 09:30
SMPとかいっても FreeBSDで2CPUなんかではないよ。
Solarisで、32とか64とかをおもっといてね。



17 名前: 名無しさん 投稿日: 2000/05/13(土) 18:24
ApacheやPerlは、動的にリンクさせといたほうが
いいのでは? pgccを使って、ビルドすると少しは、
早くなるかも...

あと、FastCGIかPCGIを利用すると、perlの
プロセスが、常駐するので、cgiが少し早くなると思います。

Apache2を試しに使ってみるのはいかがでしょうか?
(Unix Threadも使えます。)


18 名前: 名無しさん 投稿日: 2000/05/13(土) 18:37
2chくらいになるとマシンのスペックっていくらくらいいるの?
個人的には
CPU:800Mhz
MEM:512M
くらいいると思うけど、知ってる人いない?


19 名前: 名無しさん 投稿日: 2000/05/13(土) 18:51
>14
ひろゆき氏がかけてる手間と金の100倍くらい苦労しそうな方法論だと思う。
連携させるならpostgreSQLとか、もっとデータベース寄りのほうがよくねーか?
ま、お遊びスレッドだからこういう夢のようなオハナシでもいいのかも知れないけど。



20 名前: >ひろゆきさん(11) 投稿日: 2000/05/13(土) 20:16
管直人付だと、18さんみたいな人にも信用されるのでは?


21 名前: 18 投稿日: 2000/05/13(土) 20:45
本当に64Mなんですか?


22 名前: 名無しさん 投稿日: 2000/05/14(日) 00:52
関係ないけど2CHテレホ時間は異常に重いよな


23 名前: 名無しさん 投稿日: 2000/05/14(日) 00:59
64Mだからじゃないのか?


24 名前: 名無しさん 投稿日: 2000/05/14(日) 01:28
64Mだからというよりは通信帯域の違いじゃないのか?
2chがどれだけのバックボーンがあるのか知らないけどさ


25 名前: >19 投稿日: 2000/05/14(日) 07:06
inndってarctile管理の専用DB + 配送システムだと、思うが。
構築(変更)に手間がかかるのは認める。100倍かどうかは、わからんが。

両方とも、スクラッチからやるのであれば、手間は減るとおもう。
CPAN moduleで、かなり単純化可能だから

>24
それは、有り得る

結局、情報が不足しすぎてるね。実際にスペック決めるには



26 名前: Five 投稿日: 2000/05/14(日) 07:42
起業板でこんなスレッドがあがっています。
http://www.2ch.net/test/read.cgi?bbs=venture&key=958039615

どうも 2ch のすべての板を SPARC Enterprise 級のサーバーに
移設しようか、という話のようです。これで改善されるんでしょうか。
個人的にはアクセス数考えると Socket 使い尽くすのが怖いので多数の
WWW Server + 強力な DB server の組み合わせの方がいいと思って
しまうんですが。



27 名前: >26 投稿日: 2000/05/14(日) 07:59
まっ、そうなんですけど、Solarisならカーネルパラメータ
いじってやれば通常では使い尽くせないほどのセッション張
れるようになるよ(詳しい値は忘れた)。


28 名前: Five 投稿日: 2000/05/14(日) 08:07
なら大丈夫そうですね、SPARC Enterprise 1台に収容しても。
うむ、さすが Solaris。

DB 化の弊害って何かありますか。
現状のようなスレッドごとにファイルに書き出す(と勝手に想像して
いますが ^^;)仕様に比べて Disk I/O が効率化される(というか
その辺を気にしなくてよくなる)ように思うのですが・・。



29 名前: 25>Five 投稿日: 2000/05/14(日) 21:24

>2chがどれだけのバックボーンがあるのか知らないけどさ
この、ボトルネック?には答えてないゾ

>DB 化の弊害って何かありますか。
inndとの比較にも答えてないゾ
#無理もないが、どこも両方ともやってないだろうから

>27
その手の話はfjのほうが...


30 名前: Five>25=29 投稿日: 2000/05/14(日) 23:04
> 64Mだから

以前メモリを増設したら Internal Error が頻発して、それはメモリ増設に
よってボトルネックがメモリからディスクへ変わったからだという説明が
ひろゆきさんからありました。
ということで、DB 化による Disk I/O ネックの回避という題を立てたのです。
説明不足ですみません。

> どれだけのバックボーン

AT-Link と sakura でしたっけ?。sakura は以下に情報がありますね。
http://www.sakura.ad.jp/new/info/backbone.html
AT-Link は情報が見つかりませんでした。

> inndとの比較

innd(というか NetNews 全般)については経験が乏しいのでなんともいえません。
ごめんなさい。ただ、2ch の特色である
・スレッドの自由な作成(Newsgroup って誰でも自由に作成できますか?)
・age, sage システム
・あぼーん(キャンセルは透明あぼーんに相当?)
・ヘッドライン機能
といった機能は大丈夫なのでしょうか。



31 名前: 29>30 投稿日: 2000/05/15(月) 08:23
ハハハ
>スレッドの自由な作成(Newsgroup って誰でも自由に作成できますか?)
control messageをながすのね。

>・age, sage システム
>・あぼーん(キャンセルは透明あぼーんに相当?)

だめです。

ということで、機能の見直しをしないかぎりだめ

よって、却下 < 筋が通りすぎて、なにもいう言葉がない




32 名前: Five 投稿日: 2000/05/15(月) 11:37
反論しておいてこんなことを言うのは何ですが、innd をバックエンドに
持つというのはとても面白いと思いました。オーソドックスな構成として
DB をバックエンドも持つ構成を考えましたが、これは保険というか
確実にできると思われる解を述べたまでで、もし可能であれば
・データ管理の徹底的な分散化(大量のサーバーに板・スレに関係なく
 データを分散)
・動的な集積(あるスレッドのメッセージの要求があると、お互いの
 サーバーが呼びかけあって、メッセージを集める)
・キャッシュによる性能確保(あぼーん以外にメッセージの変更が
 ない)
・メッセージの漏れも許容、つまり、すべての投稿内容が見れるとは
 限らない(確率的なメッセージ漏れの許容)
という手段も可能なのではないか、そしてそのための手段として
・gnutella のような、サーバー間連携システム(WWW Gateway が板・
 スレッド・ヘッドラインを生成する)を構築し、必要に応じて peer に
 対して必要なコンテンツを提供する
・Common Indexing Protocol (RFC2651) や HyperText Caching Protocol
 (RFC2756) を使って各サーバーの持つコンテンツ情報を交換。自分自身が
 ソースでなくても、自分がキャッシュで持っていればそれを提供。
という風なバックエンドを構想(というより妄想)していました。

でも NetNews の配送システムを用いればわざわざ配送システムを
ゼロから構築する必要はないのですよね。
age, sage はともかくあぼーんはヘッダーに x-aborn: true とか
ついている場合に内容の参照を無視するとかで実現できるんじゃないか
と思っていました(ただ NetNews ってメールのようにヘッダーを
自由のいじれるかよくわかっていないので質問したのです)。

この路線でもうちょっと考えてみませんか。



33 名前: >Five 投稿日: 2000/05/15(月) 12:48
すいません、うそついちゃいました。気持ちが悪いので調べたら、
Sol2.6でtcpのセッションは同時でデフォルト1024、Maxで4096
でした。Sol7,8については知りません。ゼロを一つ余分にみて
覚えていました(笑)。


34 名前: >32 投稿日: 2000/05/15(月) 17:20
CIP,HTCPも、Status(Experimental)なんですが、どういったものなんでしょう?

最初、階層機能付きWeb Accelaratorだとおもって、
squidのソース見たら、RFCの番号が違ってた


35 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/15(月) 20:43
原因が Disk I/Oのネックだったら専用サーバ良いのかな?
I/Oがいっぱい繋げられる!って所くらいしか専用サーバが
生き残る道は無いし。
32や 64とかの SMPにして、頭でっかちのシステム組んでもなぁ。。。


36 名前: Five 投稿日: 2000/05/15(月) 21:44
>34
CIP は簡単に言えば、複数のサーバーで Query を伝播させるための仕組みと
仕様です。問い合わせの対象になるのは、Whois で管理されているディレクトリ
情報だけでなく、各種情報(LDAP ベースのディレクトリ情報)や MIME で
表現可能なコンテンツすべてです。HTTP への応用に関しては RFC では直接は
述べられていないので、その辺を考えて埋める必要があります。
HTCP は複数のキャッシュサーバー間で各自の保有するキャッシュコンテンツに
関する問い合わせや削除・更新といった各種要求を交換するためのプロトコル
です。ICP の後継になるようです。NLANR の人が author になっていますし。

この辺の応用に関しては以下の記事が参考になると思います。
http://bizit.nikkeibp.co.jp/it/top/editor/backnum/2000/1h/20000508.html
詳しい仕組みについてはほとんど触れていませんが、実際のキャッシュコンテンツの
検索や相互融通は上記のようなプロトコルを通じて実現されると思います。



37 名前: Five 投稿日: 2000/05/15(月) 21:52
>35
> I/Oがいっぱい繋げられる!

SCSI Host Adaoter n枚ざしとかで Disk 周りのスループットを理論的に
n 倍に強化できる(特に RAID0 で読み出し性能を強化)というのは
専用サーバーの大きなメリットですね。DB 化にあたり、Oracle Partitioning
Option とかでスレッド(スレッドID で partitioning)ごとにディスクに
格納するようにしたらかなり改善できそうな期待もあります。

SPARC Enterprise ならディスク周りの足腰が強かろうと思うのですが、
正直言って SPARC Enterprise 触った経験がないのでわかりません。

SMP にどれだけ意味があるか疑問なのは自分も同感です。
ただ先にハードの仕様だけ決まっている、ということなので・・。



38 名前: >30=37 投稿日: 2000/05/16(火) 17:57
Disk I/Oなら、Disk増設して、ccd/vinumがな

結局、ボトルネックを、見付けない事には、話が始まらない。



39 名前: 名無しさん 投稿日: 2000/05/16(火) 17:59
swapもinterleaveされるし


40 名前: Five 投稿日: 2000/05/16(火) 19:07
> ボトルネックを、見付けない事には

そうなんですよね。SPARC Enterprise 云々以前にまず現状の
負荷モデルがどうなっているか把握をしないと・・。
# 起業板を見る限り、Enterprise が夜に暇になる(と思われる)ので
 その時間帯を 2ch 用に開放するということらしいです。ということは
 ハードの構成も既定なのかなぁ。



41 名前: 名無しさん 投稿日: 2000/05/17(水) 09:31
DiskI/Oが辛いなんてのをどっかで見たんだけど
んでもって、よく理解もせず、右から左で申し訳ないけど
http://www03.u-page.so-net.ne.jp/da2/h-takaha/indexj.html

このsyncマウントみたいなことってどうなの??
ネタ元はLinuxでパッチな話なんだけど、
FreeBSDはどうなのかな。



42 名前: 名無しさん 投稿日: 2000/05/17(水) 21:34
FreeBSDでは標準でsyncです。
softupdateという手法を使うとasync並みの速度とsync程度の安心感を
得ることができるようですので、asyncよりはsoftupdateにしますね。
linuxにあるかどうかは知りませんが。


43 名前: 名無しさん 投稿日: 2000/05/18(木) 02:46
まず、時間帯別にsarとかvmstatとかnetstatとってみて、
ネックがどこなのかを探してみるべきでしょう。

まず、ハードありきというのは、ちょっと疑問ですね。。。


44 名前: Five 投稿日: 2000/05/18(木) 16:56
ucd-snmp いれてこの辺をリモートから監視できるようにしたら
よさそうですね。MRTG 使ってグラフ化すればわかりやすいし。
# Software Design の 4 月号あたりに出ていたような気が。

ちょっとやり方を考えてみよう。



45 名前: Five 投稿日: 2000/05/18(木) 20:29
>起業板:69
> 夜だけ間借り案の時、データ(スレッド)の引き継ぎ

この話は、今までのように www,tako,saki,teri などの細かいサーバーを
複数レンタルするのを止めて、一つのサーバーに集約しようという
話だと理解しています。そして、設定の変更は、日中は 2ch に同時アクセス
数を制限できるか、ということだと理解していました。
# 2ch 用の VirtualHost を立てて、RLimitNPROC とかを書き換える形になると
 思います。

>70
> 1台の装置で論理的・物理的に、複数の装置

これって凄いですね。AS/400 の Patition 機能みたいですね。
ただ、ikedon さんの i-Mode コンテンツも 2ch も 24x7 運用することが
前提で、夜間のあまったパワーを 2ch で使うことが動機であることを
考えると、CPU やメモリを固定的に分割するのはあんまり意に沿わない
かもしれませんね。



46 名前: >45 投稿日: 2000/05/18(木) 21:03
話が全然見えません。


47 名前: にゃんにゃん 投稿日: 2000/05/18(木) 21:48
>45
Starfireのことですね?システムボードを最低単位として
最大16ドメインまで切ることが可能だったはず。動的に
ドメインを切り直すことが可能だから、昼2CPUくらいで
2ちゃんねるを運用しといて、昼に割り当てたJOBのCPUを夜
に使わなくなった分だけCPUを全て2ちゃんねるに割り当てる
のがよろしいかと(笑)。
#ちなみに富士通のSolaris互換機でも同じ機能は可能ね。


48 名前: Five 投稿日: 2000/05/18(木) 21:49
http://saki.2ch.net/test/read.cgi?bbs=venture&key=958039615
をご覧ください。



49 名前: 起業板から転載 投稿日: 2000/05/20(土) 04:43
94 名前: 名無しさん 投稿日: 2000/05/20(土) 03:24

本日(金曜の夜,土曜の早朝)
tako 見れず , teri サーバエラーだらけ、
saki 快調、 kitanet 重いながらも見れる

ってなとこです。そろそろ軽くなるかなっ? AM4:00 以降かなッ。



50 名前: 起業板から転載 投稿日: 2000/05/20(土) 04:44
95 名前: Five 投稿日: 2000/05/20(土) 03:41

tako は FreeBSD で、あとは Linux だという話ですね。で、tako はサーバーが
ダウンしてリブートすると Apache が自動起動しない上に telnet で入れなくなって、
月曜日になってサポート係に連絡するまで外部からアクセス不能になるということが
どこかの板で書いてありました(多分批判要望)。

どういう理由で同じ OS と同じ httpd を用いながらもこのようなサーバーの
挙動の違いが出てくるか、結構興味があります。多分、kernel のバージョンや
各種パラメータの違いが反映しているのだと思いますが。
これだけのアクセス数をもつサイトを複数保有しているところはそうそうないから、
この辺の事情を定量的に分析してレポートにしたら買うところが出てくると
思いますよ。

おお、ビジネスネタですね。:-)



51 名前: 起業板から転載 投稿日: 2000/05/20(土) 04:44
96 名前: ひろゆき 投稿日: 2000/05/20(土) 04:11

takoは、アクセス過多になると、httpdがおちてしまい、
telnetの外部接続ができなくなるんですよ、、、
BSDというかOSの問題なのかなぁ、、



52 名前: 起業板から転載 投稿日: 2000/05/20(土) 04:44
97 名前: Five 投稿日: 2000/05/20(土) 04:27

でも FreeBSD は Linux より負荷に強いということで有名なんですよね・・。
例えば Walnut Creek (http://www.cdrom.com/) や Yahoo! U.S.A. は
FreeBSD です。Yahoo は手を入れまくっているようですが、Walnut Creek は
生の FreeBSD でパラメータの最適化で頑張っているそうです。

telnet で接続できないのは、意図的にそうしているような気がするのですが・・。
ひろゆきさんは /etc/inetd.conf とか設定する権限はあるのですか?
あれば /etc/inetd.conf と /etc/services に telnet の項目があるか
どうかを確認してみると真実が何か明らかになると思います。



53 名前: 起業板から転載 投稿日: 2000/05/20(土) 04:45
98 名前: twotwo 投稿日: 2000/05/20(土) 04:34

>96

telnet接続、負荷が低いうちはできるんでしょ?
kernelのMax Filesをあげずに、httpdのMaxClientsとか
を上げ過ぎてんじゃないの?カーネルパラメータとhttpd.conf
のバランスの問題だと思うよ。



54 名前: Five 投稿日: 2000/05/20(土) 04:51
File descriptor 不足ということでしょうか?。すみませんが解説して
いただけるとありがたいです。ちょっと原因の想像がつかないので。
# System は Network ほどはわかっていない・・。勉強不足です・・。
 Network だって分かっているとは言いがたい・・。

その辺のメカニズムというか、どうして資源不足が発生するかを
突き詰めないと、サーバーを強化しても同じトラブルがおきそうですね。
とりあえず MaxUsers を大きくするには Kernel の recompile が必要
だったと記憶しているので、ホスティング会社がどこまで親切かにも
かなり依存しそうですね。



55 名前: twotwo 投稿日: 2000/05/20(土) 05:07
socket()はFileDescripterを消費します。FileDescripterは
システムグローバルなので、httpdの同時接続が多くなると
他のプロセス(telnet)でもsocketに割り当てるDescripter
が無くなっちゃって無応答状態になる。っていうことだと思
いますが。

/etc/login.confでユーザ当たりのシステム資源を調整でき
るけど、まあ、最大値をあげた方が経験上有効だと思うよ。

てゆうか、チューニングしてあげるからtakoのアカウント
くれ。> ひろゆき :-D


56 名前: Five 投稿日: 2000/05/20(土) 05:13
はは、削除員に続いて、チューニング員登場ですね。
ならば自分もぜひお手伝いを・・・。



57 名前: twotwo 投稿日: 2000/05/20(土) 05:14
> 54

sysctl -w でMaxFileなどのシステムパラメータは変更できます。
でも、recompileにしてもsysctlにしてもroot権限は必要だなあ。


58 名前: Five 投稿日: 2000/05/20(土) 05:17
詳しい解説、どうもありがとうございます。> twotwo さん
# Network 板の two さんと同一人物?

httpd が死んでも FD が開放されない、ということはあるのでしょうか。
ひろゆきさんの話を信じる限りでは、httpd は落ちてしまっているの
ですよね。



59 名前: > 58 投稿日: 2000/05/20(土) 05:26
本当は httpd は死んでいないんでは?
telnet できないのに確認するなんて無理でしょう。
telnet で接続できないのと同様に httpd に接続
できないだけでは?




60 名前: twotwo 投稿日: 2000/05/20(土) 05:28
Net板のtwo氏とは別人でーす。

httpdが死んだように見えるときにtelnetで入れないので、
死んだかどうか確かめることができないんじゃないかな?
運良くその時にtelnetのセッションがはってあったとして
も、ps axとかaxuとかすると無限に時間がかかるし。top
なんかも出来ませんから。
で、リブートすると原因究明するような材料が無くなってるので、
さっぱり解決方法が見つからない。
という推測をしてるんだけど、あたってますか?>ひろゆき

とりあえず、httpdのMaxClientsを下げてみて、セッション状況
を見張るところからスタートかな。


61 名前: twotwo 投稿日: 2000/05/20(土) 05:29
> 59
あ、かぶったね。


62 名前: >57 投稿日: 2000/05/20(土) 07:43
FreeBSD 3.4って、/etc/sysctl.conf見るんだっけ?


63 名前: twotwo 投稿日: 2000/05/20(土) 08:25
FreeBSD 3.4 seems to refer /etc/rc.sysctl file at the boot
time which is simply executed by /etc/rc file.

Sorry for English.


64 名前: 62 投稿日: 2000/05/20(土) 13:21
etcの下に、書き込み権限をもつdirectory
を掘って、rc修正して、rc.sysctlを雛型にして書けば
sysctlに関してはroot権限いらないのでは?

kernelは別マシンで、コンパイルしてftp putで、
後で、rootが置き換えれば

どう?


65 名前: よく分かってないのですが 投稿日: 2000/05/20(土) 14:49
3.4-RELEASE Genericカーネルのmaxusersは32。
/usr/src/sys/conf/param.c
によると各種パラメータは

NPROC = (20 + 16 * MAXUSERS) = 532
MAXFILES= NPROC * 2 = 1064
ncallout = 16 + NPROC + MAXFILES = 1612
NMBCLUSTERS = (512 + MAXUSERS * 16) = 1024
maxsockets = 1064
 (MAXFILES か NMBCLUSTERS のうち大きいほう)

だそうです。


66 名前: >65 投稿日: 2000/05/20(土) 17:20
sysctl -aでみえるよね。

で、なんの話なの?(調節前のparameterの値 ?)



67 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/21(日) 01:55
53あたりからは、この話題と関係してる?
http://www.2ch.net/test/read.cgi?bbs=unix&key=947506649

最近、過去ログを読み漁るほうが多くなってしまった。。。
どるばっきー3さんのオフラウ UNIX版を、誰か作る?

> Five さん
ネットワーク板、読み応え、あり過ぎます。誕生秘話も発見。(笑)
大先生さまに検索可能なように頼もうかな。


68 名前: 66 投稿日: 2000/05/21(日) 10:11
その手の話は、このthreadの上の方でかいてあるのでは?



69 名前: 名無しさん 投稿日: 2000/05/21(日) 16:20
4にも書いてあるけど、maxusers=128、NMBCLUSTERS=8192程度の
設定でかなり強力になりますよ>FreeBSD

後は、httpdのチューニングが甘くてメモリを使用しすぎているのでは?
httpdが1プロセス1MB以上使用しているようでしたらチューニングが
甘いと思いますよ。(mod_perl含まず)

私もtakoと同ランクのサーバーをsakuraで借りていますが、
80万req/Dayの処理を余裕で捌けていますから。




70 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/22(月) 13:49
>69
チューニングの仕方を、定量的に出すには、
アクセス数は当然として、他にどんなパラメータが必要?


71 名前: 69 投稿日: 2000/05/22(月) 16:26
チューニングとは言えないが必要のないモジュールは組み込まない、
必要なモジュールは全て静的に組み込む位です。

2chの場合、以下のモジュールだけで十分だと思います。
http_core.c
mod_log_config.c
mod_mime.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_alias.c
mod_access.c
mod_auth.c

他にも、15に書いてあるhttpdをスタティックリンクで構築する
方法もメモリ使用量軽減にかなり効果があります。




72 名前: 69 投稿日: 2000/05/22(月) 16:47
チューニングの方法を定量的に出すのはそれほど
難しいことではないと思います。

私は以下のようにチューニングしています。
1.必要のない機能は全て削る。
2.top、ps -aux等で軽量化したhttpdのメモリ使用量を調べる
3.2の結果を元にスワップを起こさない程度にMaxClientsを増やす
4.コンテンツの内容に合わせて、MaxKeepAliveRequests、KeepAliveTimeoutを設定する

それでも駄目なときは mod_writedを試してみる http://www.dd.iij4u.or.jp/~hideo-m/apache/





73 名前: Five 投稿日: 2000/05/22(月) 17:38
おおざっぱに言えば、
性能 = 秒あたりのトランザクション数(a) x トランザクションあたりの処理量(b)
となると思います。処理量には、メモリ使用量、ディスク I/O の消費帯域、
CPU の利用率などが入ります。そして、性能が一定だとすると、a が大きい場合には
b を小さくする必要がありますし、b が小さくならないのであれば a を小さくする
(つまり負荷分散)か性能を大きくする必要があります。

a や b が一定でなく、確率的な変動を示す場合には待ち行列理論を用いて平均値を
求めることになりますが、たいていの場合には axb 程度でも有益な解析が
できます。問題は、その辺の基礎データが一切ないことですよね。だから
みんな guess-work しかできずに抽象的な話にしかならないのだと思います。



74 名前: 名無しさん 投稿日: 2000/05/22(月) 17:52
>待ち行列理論を用いて

で、モデルは?


75 名前: 74 投稿日: 2000/05/22(月) 17:58
M/M/x を仮定するの?



76 名前: Five 投稿日: 2000/05/22(月) 18:00
M/M/n じゃないかな?
M か G はある意味どうでもいいでしょう。どちらにしたって
実際とは違うし、だったら計算が楽なほうがよい。
# 突っ込まれると弱いなあ・・・。



77 名前: 74=66 投稿日: 2000/05/22(月) 21:11
Erlang (つまりEも、有り得るけど、)? (藁
まあ、73に書いてある通り、そこまでやっても、意味あるとは思わないけど、

さらに、確率密度関数なんて、こんなことで、言われたくないけど

#営業トークならわかるんだよね。一発たたいて…というのは。

論旨としては、非常に納得できるが、そこまでいうとね。(後半ね)

#CPU/Disk IOもqueueinf theoryの一形態だし、今問題になっている
#process/serviceもその一形態だし、複合的になってとても定量的とはいえない
#と、思うし、せめて、定性的と言って欲しかったが

と、書いて見返したが、定量的と言っているのは70だった。
その意味で、72のいうことは非常に示唆に富んでいると思うが

どう?


78 名前: Five 投稿日: 2000/05/22(月) 21:29
どうやら定量的という言葉の定義を間違って認識していたようです。
すみません。
全面的に同意です。> 77



79 名前: 名無しさん 投稿日: 2000/05/22(月) 22:43
Try & Error の方が手取り早いって事ね。


80 名前: Five 投稿日: 2000/05/22(月) 22:57
定量的 = 実際にシステムを動かしてみて、性能の指標になるデータを
     適宜取得し、解析する
定性的 = 理論的にモデルを組み立てて、そのモデルの性質を考察する
     ことで、実際のシステムに触れずに性能の解析を行う
という感じでしょうか。

> Try & Error の方が手取り早い

そうそう、実際にやってみて確認する。
ベンチマークテストの出番でもあります。



81 名前: 77 投稿日: 2000/05/23(火) 13:11
ベンチマークと、いえば、オーバークロック ^^;;


82 名前: 投稿日: 2000/05/23(火) 13:18
書き込み<<表示なんだから、squidのhttpdアクセラレータとかで十分だと思うんだけどな。
ながーいHTMLをはくだけで、288モデムの先が受け取りおわるまでhttpd動かしつづけないといけないから、もったいない。
メモリ256ならバッファ128、apacheに64、squidに64て感じでいいかな、と。



83 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/23(火) 13:54
あ、、、70 での "定量的" 発言は、どちらかというと
80 の Five さんの "定性的" の定義に近いんだけど。。。

「実際のシステムに触れずに」
んー、73 の Five さん「推測しか。。。」なので、
ひろゆきさんに、
「これと、これと、これと、これと、、、のデータ出せる?」
「それだと、これこれだから、この値は、これくらいが、良いのでは?」
と持っていきたかったんだけど。

ひろゆきさん、金曜日まで中国に出張 (?) らしいね。


84 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/23(火) 14:00
71, 72 の 69 さん発言に対する、77 の 64 = 74 さんの
> 非常に示唆に富んでいると思うが
> どう?
おっしゃる通りです。

72 の 69 さんの手順(?) 3.からするに、メモリ 64MB だと
httpd スリムにして、せいぜい MaxClients 30 - 40 ? ってこと?


85 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/23(火) 14:10
httpd スリム化は、他のどのサーバーにも共通して効果ありそうだね。
スタティックリンクは、メモリ使用量を少なくというより、
動的に変化して算出し辛いから?

71 の 69 さんが示してくれたモジュールの限定は、そうなんだろうね。
(自分で検証してないケド、多分そうでしょう。(^^ゞ)
とりあえずは 一発 httpd.conf で Try & Errorが良いのかな?


86 名前: 77>84 投稿日: 2000/05/23(火) 14:11
KeepAliveTimeout 5
も、あるのでは


87 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/23(火) 14:20
> りさん
> ながーいHTMLをはくだけで、288モデムの先が受け取りおわるまで
へっ!そうなの?
じゃぁ、昼間は学校や会社の専用線使ってアクセスしてる人が
多いから (推測)で、夜はテレホもあるし、今の通信事情じゃ
どうにもならない?

> メモリ256なら
これも、上で書いたパラメータの1つで、ひろゆきさんが
各サーバーのスペックを教えてくれないかな?


88 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/23(火) 14:22
あ、、、夢中になって書いてる家に、86 さんのレスが。

> KeepAliveTimeout 5
これって、87 で書いた、前半部分にも効果あり?


89 名前: 69 >88 投稿日: 2000/05/23(火) 16:01
あまり効果は無いと思う。
低速回線を相手にする場合は、squidやmod_writedが効果的です。



90 名前: 77 投稿日: 2000/05/23(火) 18:43
密度関数 ===> 特性関数 ^^;;


91 名前: 投稿日: 2000/05/23(火) 20:40
>87
そうっすよ。89さんもいってるけど。
apache1.3.xまではマルチプロセスで、親httpがセッション毎に子httpdに振り分けるってなってるわけだから、
たとえばテレホタイムで1Kbpsしかでないクライアントからの接続があったら、静的なものでも10kのページ取るのにhttpd一個を10秒+KeepAliveTimeoutだけ占有しちゃうわけです。
メモリに関してはカンというか、経験から思いつきです。


92 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/24(水) 19:34
>91
なるほど。。。自宅からアクセスするの控えようかな。
良く、teri.2ch.net にある板の、最初のページが、
途中で切れちゃってたり、タグが見えて終わってたりするのは、
KeepAliveTimeout の時間を超えちゃったからのかな?

で、あくまでも感覚だけど、www.2ch.net って、
相当長くしてないかな?
気長に待ってると、大抵最後まで表示されるから。


93 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/24(水) 19:35
そろそろ、Five さん的、まとめが欲しい頃。。。


94 名前: Five 投稿日: 2000/05/25(木) 03:37
うっ、召喚されたような気が・・・。

でもまとめるまでもないような気が・・・。72 の意見が全てという気も。

・httpd は client との通信を全て squid の http accelarator 経由で受ける
 # 低速クライアントへの対処(httpd の各プロセスの処理時間の短縮)
・httpd を make するときに library を static link し、また余計な
 module を削除
 # 消費メモリの量を少しでも減らす
・MaxClient をなるべく多くする。
 # 同時受付数をできる限り多くする。
・MaxKeepAliveRequest を 0 に、KeepAliveTimeout を長めにとる。
 # 子プロセスがファイルの送出が終わっても、長時間終了しないで次のリクエストに
  直ちに応答できるようにする。
# FreeBSD のカーネルチューニングについては、移転先が SPARC Enterprise という
 ことで、割愛。

あと、CGI/Perl 板で出てきたのは
・mod_perl をいれて処理を高速化
 # メモリ消費量はどうなる?。module 減らした努力を無効にしないか?
・Servlet 化、データをなるべくオンメモリで処理するように cgi を改造
ですね。

個人的には DB 化も考えていましたが、これは賛同者がほぼ皆無なので放棄。



95 名前: Five 投稿日: 2000/05/25(木) 03:41
MaxKeepAliveRequest, KeepAliveTimeout, MaxClient の設定を補完するべく
MinSpareServers, MaxSpareServers, StartServers を多めにして、httpd の
子プロセスを多めに起動するというのはどうでしょうか。CurrentServers を現在
fork() されている httpd の子プロセス数とした場合、
MaxClient > CurrentServers > MaxSpareServers な状況だと
CurrentServers - MaxSpareServers 個のプロセスは KeepAliveTimeout が
経過すると消滅し再度 fork() する手間が発生し、サーバーの負荷を高める
ような気がします。

もっとも子プロセス数が増えるということは、lock が競合する可能性が高まり
Internal Server Error (501) が増える原因になるので、書き込み数によっては
かえって逆効果になりますが。ということで、読み取りリクエストと書き込みの
比率(できれば絶対数)を知りたいです。

あと、個人的予想では 2ch ではあるスレッドのデータファイル (dat) を複数
プロセスから同時にオープンしようとすると 501 error を出すような気が
します。というのも、
・板自体はただちに表示されるときでも、read.cgi 経由でスレッドを開こうと
 すると 501 error が出力される場合がある
・人気のあるスレッドで起きる場合が多い(ような気がする)
・でも書き込みとかはない(ときでも発生する)
からです。

そうだとすると、read.cgi への要求が多い場合には、httpd の子プロセス数を
いたずらに増やすのは単純に 501 error を多くするだけのような気がします。
こういう場合に、アクセスを拒否するのと 501 error を出すのとどちらがましか、
というトレードオフを考える必要があるかもしれません。接続数を犠牲にして
性能を優先するか、性能を犠牲にして接続数を優先するか、ということです。
# cgi を書き換える、という選択肢はとりあえずおいておきましょう。



96 名前: たまなし 投稿日: 2000/05/25(木) 17:17
httpd まわりを整理したら、
DB 化したり、cgi の見直しをしたりして、
Disk I/O が 2ch のボトルネックに
なっているかどうか見直す段階になると思います。

DB 化 に関する意見が出ないのは、



97 名前: たまなし 投稿日: 2000/05/25(木) 17:38
DB 化 に関する意見が出ないのは、
現状の問題が整理されてなくて、
整理するための材料が無いから、
なんでしょうね。



98 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/25(木) 22:32
ちょうど、ひろゆきさんも帰ってきたみたい。
このスレッド見てくれないかな?(笑)

> Five さん、たまなしさん
> DB 化
わたし、DB チンプンカンプンなので、黙ります。全然、案無しです。。。
ただ、DB 化については、更に物理メモリが必要となりそうな。。。

今月の Software Design に、特集記事があったけど、
「さぁー、インストールしましょう!」に終始してた。

でもでも、他の方で Oracle 8i を入れた方や、
汎用機、UNIXオープン系の SE さんも訪れてるみたいなので、
更に、たくさんの案件も出そうですね。


99 名前: Five 投稿日: 2000/05/25(木) 22:45
Oracle はライセンス料を考えるとちょっと非現実的でしょう。
MySQL を考えていました。トランザクションは要らないし(最近実装された
みたいですが)、読み出しは高速だし、タダだし。

DB 化は将来の課題にとっておいて、現状の cgi でハードを変えることで
どこまで性能が上がるかをまず検証した方が切り分けができていいでしょうね。



100 名前: Five 投稿日: 2000/05/25(木) 22:49
しかし 95 を書いてて思ったのが、
・定量的な解析だけだと、無闇に構成を変えてチャレンジすることになって、
 手間の割に得られる結果が乏しくなる危険がある
・定性的な解析だけだと、実際とモデルが乖離していることに気づかずに
 間違った結論に達する可能性がある
ということで、両方やる必要がありますね、やっぱり。
どこかで 2ch の定性的モデルを組み立てる必要があるかも。



101 名前: Five 投稿日: 2000/05/26(金) 02:40
ふと思いついて『インターネットオペレーション』(共立出版)を読んだら
篠田先生(日本最高のハッカーの誉れも高い)が Web Server の最適化に
ついてお書きになられていました。

で、上記まとめに出てこないポイントとして以下の点が出ていました。
・KeepAlive は、ほどほどに
 KeepAliveTimeOut や MaxKeepAliveRequest は、HTTP/1.1 の KeepAlive つまり
 Client が Server との接続を切らずに維持する KeepAlive に関するパラメータ
 であるため、KeepAlive を有効にして長時間接続を許すと、結果として受け付け
 可能な同時接続数が減る(Request がなくても KeepAliveTimeout が経過するまで
 は他の Client からの Request を受け付けなくなる)ので、KeepAlive 期間中に
 同時リクエストをどれだけ受けるかを考慮しつつ短めに抑えるべきと出ていました。
 したがって、KeepAliveTimeOut は短め(15秒が推奨されている模様)にしたほうが
 よいみたいです。
・Cookie 禁止
 Server side Cookie を有効にすると、http accelarator の効果が出せなくなる
 (Cookie を処理するために httpd にいちいち問い合わせなければならない)ので、
 できる限り Cookie は使わないように、ということでした。
・その他
 不要な Server log は取らない。DNS 逆引き禁止。



102 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/26(金) 02:41
あぁ、Five さん 100 ゲットしてた。良いな、良いな。

99> DB 化は将来の課題にとっておいて、
100> どこかで 2ch の定性的モデルを組み立てる

では、自分が2ちゃんねるを運用するとしたら?
の、あくまで、お遊びで。


103 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/26(金) 02:42
レンタルサーバーの利点として、グローバル IP に太い回線
ってのがありますよね。でも at+link は、OCN エコノミー 128kbps。
仮に、CATV を利用できて自宅でサーバー立てて良い場合。
(ひろゆきさん(なんでもあり板)、kitanet で 256kbps かな?)

OS は、PC UNIX。
Linux, FreeBSD でも Soralis 8 for Intel x86 でも、
とにかく置いておいて。。。

予算は手元に \100万くらい。この時、

1. Compaq とかの安くて、P!!! Xeon、メモリのいっぱい積める
 PC サーバを1台。(\400k-\1M か?)
2. U-10 PC (メモリ 128MB)クラスで、追加メモリ \10k/128MB。
 計 256MB (Max 512MB ?)、PC 5-7 台。
 自作で HDD 周りを強化したのも良いかも。

+ 毎月の回線代。

回線(ネットワーク)的に見ると、どっちも元が1本。
現状の2ちゃんねるは、どっちが向いてるだろう?

# 起業、経営学板の方がよかったかなぁ???



104 名前: !?( ̄□ ̄;)!! 投稿日: 2000/05/26(金) 02:45
また、やってしまった。!?( ̄□ ̄;)!!
101 の Five さんのが続いていた。。。
102 - 103 は、話を飛ばし過ぎちゃいましたです。。。


105 名前: 名無しさん 投稿日: 2000/05/26(金) 16:01
あげます



106 名前: 名無しさん 投稿日: 2000/05/28(日) 11:43
面白いテーマなのであげときます


107 名前: 名無しさん 投稿日: 2000/05/28(日) 14:37
OCNエコノミーでレンタルサーバって、基地外か?



108 名前: >103 投稿日: 2000/05/30(火) 06:47
自作ってのは無理があるのでは?
確か、さくらってケースのサイズとかに規定があったから1Uの鯖をBTOしてくれる
適当なショップブランドなり、メーカーなりに依頼して作った方が・・・


109 名前: 名無しさん 投稿日: 2000/05/30(火) 06:51
BTOって何ですか


110 名前: 名無しさん 投稿日: 2000/05/30(火) 06:57
BTO = Built to order
受注生産のこと



111 名前: 名無しさん 投稿日: 2000/06/04(日) 20:07
FreeBSD に特化した話は、4 くらいだねぇ。
この程度でサーバー用途としてなら
FreeBSD > Linux と言われるのか。



112 名前: 名無しさん 投稿日: 2000/06/20(火) 00:52
bandwidth に関する議論は、ここを参考にするとよいのでは?
http://www.maido3.com/mentai/




113 名前: 名無しさん 投稿日: 2000/06/20(火) 02:50
なるほど。> 112

しかし凄いな。
続きは、コチラで。
http://www.2ch.net/test/read.cgi?bbs=unix&key=958398149