【サーバ】2011夏モデルを作ろうpart2 さてチューニング始める?

このエントリーをはてなブックマークに追加
566ピロリ(WiMAX)
まぁ いろいろ変なのを直してます
567未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 00:08:16.27 発信元:219.117.239.35 0 BE:1742382-PLT(23506)
$ perl -wc f22.cgi
f22.cgi syntax OK
なぁんか詰まってたのかな。@こはだ
568名無しさん@お腹いっぱい。(関西地方):2012/01/14(土) 00:11:49.52 発信元:61.89.11.92 0
さっきやった時には治ってた。
犯人はおそらく>>566
569未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 00:13:26.33 発信元:219.117.239.35 0 BE:3921449-PLT(23506)
Apr 16 2011 f22.cgi

ちがうますw
570ピロリ(WiMAX):2012/01/14(土) 00:23:46.26 発信元:49.134.238.64 0
このさいSETTING.TXTのSSDへのバックアップを多頻度にしようと
f15にくみこんだ、しかしどうも動きが変だ、いろいろ調べたら
liveplusの圧縮やって以降の圧縮がへんだ
それを直そうと四苦八苦、結局なおらないからliveplus処理したらlast;っていうコードいれたー
571ピロリ(WiMAX):2012/01/14(土) 00:24:08.37 発信元:49.134.238.64 0
そのときf22は止めるのだ
572名無しさん@お腹いっぱい。(もんじゃ):2012/01/14(土) 00:30:57.21 発信元:121.117.76.200 0
EF2000に置き換えるんですか?
573未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 00:38:20.76 発信元:219.117.239.35 0 BE:2178454-PLT(23506)
をぅっと、kohadaのf22止めるだすか!?
574ピロリ(WiMAX):2012/01/14(土) 00:45:29.47 発信元:49.134.238.64 0
いやいや 作業中0644にするだけでーす
575未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 00:49:36.38 発信元:219.117.239.35 0 BE:2941439-PLT(23506)
f15を眺めてみますた。
last; をみつけました。
その7行目前の処理、どう考えてもおかしゅい。(おそらく元からある処理)
意味をなしていないどころか、システムに支障を来すような希ガス。。。
576未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 00:50:30.41 発信元:219.117.239.35 0 BE:1634235-PLT(23506)
なぁる♪> chmod 0644
577名無しさん@お腹いっぱい。(関西地方):2012/01/14(土) 00:51:01.14 発信元:61.89.11.92 0
なるほど。
だから500返してたわけか。
578ピロリ(WiMAX):2012/01/14(土) 00:53:39.34 発信元:49.134.238.64 0
>>575
$SIG{$_} = sub { push(@sigs, $_[0]); } foreach (qw/HUP INT PIPE ALRM TERM USR1 USR2 IO VTALRM PROF/);

これかしらん?
私もよくわかんないのよね、たぶんSunOSさん作だと思うけど
579未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 01:28:38.85 発信元:219.117.239.35 0 BE:3484984-PLT(23506)
それそれー♪多分、2002年に描いた人だと思うw

内容は処理中になぁんかシグナル飛んで来てない?っていうのを記録しているだけなんだけれども。。。
ちなみに、%SIG変数(ハシュ:perl固有のグローバルな特殊変数)を書き換えているんだけれども、%SIGって、外部からシグナルを受け取ったときの処理先(要するにサブルーチン[クロージャ])が入っています。
なので、
$SIG{$_} = sub { push(@sigs, $_[0]); }
というかたちで代入されています。
で、その後ろ。
foreach (qw/HUP INT PIPE ALRM TERM USR1 USR2 IO VTALRM PROF/);
見覚えがある文字列が並んでいるます。シグナルの別名っていうかconstantなの。(これ、鯖の環境によって変わるます@危ないよなぁ その1)
でもってこんな書き方だと、perlになれていないと意味不明かもw
foreach ('HUP', 'INT', 'PIPE', 'ALRM', 'TERM', 'USR1', 'USR2', 'IO', 'VTALRM', 'PROF');
こう書くと判りやすいかな?そう、クォーテーションで括るのマンドクセって時に使う書き方なのでした(クォート演算子[qw])
そして描き方が倒置なのでこれまた判りやすくすると、、、

foreach ('HUP', 'INT', 'PIPE', 'ALRM', 'TERM', 'USR1', 'USR2', 'IO', 'VTALRM', 'PROF') {
$SIG{$_} = sub { push(@sigs, $_[0]); }
}
こうなるます。

ようするに、HUPから1つずつ取り出して$_(スカラー変数/foreach文で代入先が省略されるとインプリシットに使われる特殊変数) に代入されるます。
なので、$SIG{HUP} = sub { push(@sigs, $_[0]); }になるんだけれども、後ろにある$_[0]って、本来は@_(配列変数/インプリシットな特殊配列[リスト]変数)の0番目(先頭)の要素なんだけれども、
これって何も代入されていないのです。なので常に未定義な値、、、とも限らない不確定な要素。(だってシグナル飛んで来たときなんてどうなっているか判らないもん@危ないよなぁ その2)
そすて元々何かしらの処理が%SIGには埋め込まれているのを強引に上書きしているので、更におかしくなるんじゃ無いの?となるのですです。
580未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 01:35:33.71 発信元:219.117.239.35 0 BE:2723055-PLT(23506)
あ、$_[0] って、shiftと同じか。。。
って事で訂正m(_ _)m
@_の0番目にはシグナル名が入ってくるます。

ってことで、デバグ的な操作を放置したままって感じがしますので、放置で構わないかもしれませんw
581未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 01:37:27.60 発信元:219.117.239.35 0 BE:3050047-PLT(23506)
あ、いや、放置よりも、コメントにしちゃう方が良いかもです。

・・・さっさと眠ろう。
582ピロリ(WiMAX):2012/01/14(土) 01:45:25.83 発信元:49.134.238.64 0
そのうちコメントにしてみまーす
583ピロリ(WiMAX):2012/01/14(土) 03:35:10.32 発信元:49.134.238.64 0
>>564
これってどうやったら見れるの?
だれかおせーて
584名無しさん@お腹いっぱい。(しうまい):2012/01/14(土) 04:35:03.76 発信元:182.169.246.11 0
基本的に温度取得はマザーボードに依存するから、lm_sensorsが鉄板だけどLinuxでしか動かない
FreeBSDにはbsdhwmonというのがあるらしいけど、対応マザボは少ないね

仕組みはMSR registerを読み出すだけだったはずなので、移植は容易なはず
585名無しさん@お腹いっぱい。(しうまい):2012/01/14(土) 04:42:52.95 発信元:182.169.246.11 0
あ、間違えた、MSRじゃなくてSMBusだな。
586未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 09:13:08.48 発信元:219.117.239.35 0 BE:4574276-PLT(23506)
587名無しさん@お腹いっぱい。(しまむら):2012/01/14(土) 13:23:55.79 発信元:210.254.69.233 0
●温度計測ソフトウェア
SpeedFan
http://www.almico.com/speedfan.php
MBM5                    
http://mbm.livewiredev.com/
EVEREST Home Edition     
http://www.lavalys.com/index.php?page=product&view=1
Coretemp
http://www.alcpu.com/
HWMonitor
http://www.cpuid.com/

●FreeBSD (and Linux/NetBSD/OpenBSD) 用温度計測ツール
xmbmon
http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html

自作板はこれらを使用しているよ
588ピロリ(WiMAX):2012/01/14(土) 14:26:22.80 発信元:49.134.219.39 0
awabiがまだちょくちょく落ちるなぁ
突然勝手にリセットかかるのよねー、へんねー

awabiも >>507 の設定にしてもらおう。

StartServers 1024 -> 1022
MinSpareServers 351 -> 1022 ↑あげ
MaxSpareServers 1024
MaxClients 1280 -> 1024 ↓さげ
MaxRequestsPerChild 10000
MaxMemFree 2000
589ピロリ(WiMAX):2012/01/14(土) 15:15:21.99 発信元:49.134.219.39 0
たのんできましたー
じきにapache再起動はいりまーす
590ピロリ(WiMAX):2012/01/14(土) 15:30:30.71 発信元:49.134.219.39 0
作業終わったそうですー
591名無しさん@お腹いっぱい。(聖火リレー):2012/01/14(土) 17:23:28.83 発信元:113.197.137.154 0
592名無しさん@お腹いっぱい。(日本):2012/01/14(土) 18:54:34.78 発信元:114.160.23.53 0
sysctl -a | grep "temperature"
でCPUの温度が出ますー。
593ピロリ(WiMAX):2012/01/14(土) 18:56:05.06 発信元:49.134.219.39 0
awabi

ch2awab@banana8308:~$ sysctl -a | grep "temperature"
dev.cpu.0.temperature: 82.0C
dev.cpu.1.temperature: 82.0C
dev.cpu.2.temperature: 83.0C
dev.cpu.3.temperature: 83.0C
dev.cpu.4.temperature: 85.0C
dev.cpu.5.temperature: 85.0C
dev.cpu.6.temperature: 84.0C
dev.cpu.7.temperature: 84.0C
594名無しさん@お腹いっぱい。(SB-iPhone):2012/01/14(土) 18:57:28.24 発信元:126.247.168.87 i
oh
595ピロリ(WiMAX):2012/01/14(土) 19:01:05.30 発信元:49.134.219.39 0
ch2haya2@tiger5501:~$ sysctl -a | grep "temperature"
dev.cpu.0.temperature: 56.0C
dev.cpu.1.temperature: 56.0C
dev.cpu.2.temperature: 56.0C
dev.cpu.3.temperature: 56.0C
dev.cpu.4.temperature: 58.0C
dev.cpu.5.temperature: 58.0C
dev.cpu.6.temperature: 57.0C
dev.cpu.7.temperature: 57.0C
596名無しさん@お腹いっぱい。(もんじゃ):2012/01/14(土) 19:21:02.00 発信元:60.33.137.155 0
>>593
高すぎる気がしてならない
597名無しさん@お腹いっぱい。(関西・東海):2012/01/14(土) 19:32:57.02 発信元:124.146.174.50 (AUy3nfT) O
VIPをν速の鯖に移転させよう(提案
598名無しさん@お腹いっぱい。(関西・東海):2012/01/14(土) 19:36:04.77 発信元:124.146.174.50 (AUy3nfT) O
>>593
awabiは嫌儲民の精神力で動作するサーバーだと聞いておりましたが……
599名無しさん@お腹いっぱい。(茸):2012/01/14(土) 21:50:31.35 発信元:27.229.80.109 0
>>593
鯖がんばってるなぁ...
600名無しさん@お腹いっぱい。(しうまい):2012/01/14(土) 22:04:20.24 発信元:180.31.37.114 0
>>593
やっぱり1Uに2台詰め込んだあのブレードではエアフローがろくにないんだろうな
これじゃターボブーストには入りようがない
601未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/14(土) 23:51:22.72 発信元:219.117.239.35 0 BE:2613683-PLT(23506)
$ sysctl -a | grep "temperature"
$
(´・ω・`)
602名無しさん@お腹いっぱい。(おにぎり):2012/01/15(日) 00:06:05.91 発信元:219.116.88.164 0
( ^ω^)・・・
603未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/15(日) 00:26:19.72 発信元:219.117.239.35 0 BE:654023-PLT(23506)
http://www.macminicolo.net/facility.html
ターボブーストしていないのかなぁ。。。
604名無しさん@お腹いっぱい。(しうまい):2012/01/15(日) 00:38:59.31 発信元:180.31.37.114 0
FreeBSDって、CPUのクロック推移とか見れないんです?
605 ◆cZfSunOs.U (アメリカ合衆国):2012/01/15(日) 03:45:58.62 発信元:206.223.151.75 0
$SIG{$_} = sub { push(@sigs, $_[0]); } foreach (...);

上の方で言われてる↑のシグナルハンドラの件ですが,
FreeBSD のデフォルトではプロセス終了となる
シグナルに対して設定してます.
http://www.freebsd.org/cgi/man.cgi?query=signal

F{15,22} の実行中に Apache 側からシグナルが送られるなどして
途中で終了していると思われるケースがたまにあって,
途中で終了するとあまりよろしくない状態になったりするので,
それに対処するために入れていたような記憶があります.
606名無しさん@お腹いっぱい。(しうまい):2012/01/15(日) 06:15:14.74 発信元:182.169.246.11 0
>>600
http://lwn.net/Articles/424496/
>If a core is to run in turbo mode, all other cores on the same die must be in a sleep state.
>The end result is that turbo mode can give good results for single-threaded workloads.
607未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/15(日) 11:57:51.90 発信元:219.117.239.35 0 BE:2614638-PLT(23506)
>>605
うぅむ、、、Apache側からシグナルが飛んでくるって云うのは、そもそもの仕組みがおかしいのではないのかなぁと。
(しかもforループの中に描かれているし)
ひとまずコメントとか付いていれば助かるのですが。

あと、これまで以上に2ちゃんねるでの活動は難しいのでしょうか?
いやあのそのこの、未来を担う若者達がうずうずしておりますですw
608名無しさん@お腹いっぱい。(東日本):2012/01/15(日) 12:04:53.48 発信元:218.46.177.214 0
逮捕されちゃうからねv(*´∀`*)v
609名無しさん@お腹いっぱい。(しうまい):2012/01/15(日) 12:54:24.56 発信元:61.199.142.216 0
若者がんばれ!


って「若者」なのかと無粋なつっこみを入れてみるw
610 ◆cZfSunOs.U (アメリカ合衆国):2012/01/15(日) 13:22:29.06 発信元:206.223.151.75 0
>>607 まぁ普通に考えればおかしいのでしょうが,
高負荷下で動いているとそういうおかしい状況になることも
たまにあるようで......

あと,for ループは当時はなかったと思うので
(他サーバのスクリプトでは今でもなかったりしますし),
後で追加されたのではないかと.
611 忍法帖【Lv=3,xxxP】 (公衆):2012/01/15(日) 16:38:13.27 発信元:220.159.142.28 0
>>607
10年以上前の知識ですみませんが、NCSA httpdだと、CGIの実行中にブラウザ側で通信を切断されると、CGIを止めるためにシグナル飛んできます。タイミングに依存した記憶があります。apacheは実験したことありません_o_
612611(公衆):2012/01/15(日) 17:57:34.15 発信元:220.159.142.28 0
あ、httpdからシグナルが来るというよりは、httpdとCGIの間が切れる結果、OSからSIGPIPEが飛んで来るというのが実際のところなのだと思います。
613ピロリ(WiMAX):2012/01/15(日) 23:11:04.17 発信元:49.133.85.144 0
last pid: 20320; load averages: 4.37, 3.43, 3.12 up 2+01:57:53 06:10:37
1111 processes:2 running, 1108 sleeping, 1 zombie
CPU: 23.5% user, 0.0% nice, 7.1% system, 0.4% interrupt, 69.0% idle
Mem: 3687M Active, 2216M Inact, 1500M Wired, 304M Cache, 816M Buf, 79M Free
Swap: 8192M Total, 2144K Used, 8190M Free

ch2awab@banana8308:~$ sysctl -a | grep "temperature"
dev.cpu.0.temperature: 84.0C
dev.cpu.1.temperature: 84.0C
dev.cpu.2.temperature: 86.0C
dev.cpu.3.temperature: 86.0C
dev.cpu.4.temperature: 86.0C
dev.cpu.5.temperature: 86.0C
dev.cpu.6.temperature: 82.0C
dev.cpu.7.temperature: 82.0C
614名無しさん@お腹いっぱい。(たこやき):2012/01/15(日) 23:26:47.43 発信元:122.196.3.168 0
> 1 zombie
ゾンビって・・・
615名無しさん@お腹いっぱい。(あゆ):2012/01/15(日) 23:27:10.01 発信元:114.155.127.123 0
CがFだったらな
616未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/15(日) 23:28:30.68 発信元:219.117.239.35 0 BE:1633853-PLT(23506)
CGIはインターフェイスなんだから、きっかけだけで良いと思うのなの。
ブラウザとかで何もかもやっちゃおうとするから、おかしくなるんじゃないかなぁと。

>>613
この結果を、~/_service/に書き出すのですね♪
617名無しさん@お腹いっぱい。(茸):2012/01/15(日) 23:34:22.38 発信元:183.73.147.89 0
>>613
!temperatureで平均温度を表示してあげたいくらい熱いなぁ
618名無しさん@お腹いっぱい。(しうまい):2012/01/15(日) 23:53:12.56 発信元:60.40.20.161 0
#! /bin/sh -
#
# $Id: temperature.sh,v 0.1 2012/01/15 23:45:67 ch2nanashi Exp $
#

TZ=JST-9; export TZ
PATH=/usr/bin:/bin:/usr/local/bin; export PATH

_SERVICE=~/public_html/_service
_FILENAME=temperature_`date +%Y%m%d`.txt

_OUT1=`date +"%Y/%m/%d %H:%M:%S"`
_OUT2=" Temperature="
_OUT3=`sysctl -a | grep "temperature"`

echo ${_OUT1}${_OUT2}${_OUT3} >> ${_SERVICE}/${_FILENAME}

exit 0
-----
_serviceに書き出すシェルスクリプトはこんな感じかねえ
某fakef22.shを適当に改造しただけだから動くかどうかは分からん
619ピロリ(WiMAX):2012/01/16(月) 00:21:26.78 発信元:49.133.85.144 0
リロードバーボンのアイデア

健在は各サーバで10分毎にPerlのcgiを起動している
処理内容はログを読んで過去10分間のアクセスを集計して激しいのを検出したらバーボン送りにする。

問題点
毎回でかいログファイルを読み込み過去10分だけ集計するので無駄な読み込みが多い

で、現stats.2ch.netのようなパイプを作って検出処理をやる
メリット1、無駄にでかいファイルを読まなくて良くなる
メリット2、10分毎というかくかくとした動きじゃなくほぼリアルタイムで検出可能となる。
620名無しさん@お腹いっぱい。(しうまい):2012/01/16(月) 00:25:56.12 発信元:180.31.37.114 0
>>619
リアルタイムなら高速連投スクリプトに対しても防御ができる?
621ピロリ(WiMAX):2012/01/16(月) 00:27:01.76 発信元:49.133.85.144 0
かも、
賢いロジックをみんなで考えれば、
622名無しさん@お腹いっぱい。(関西地方):2012/01/16(月) 00:30:21.90 発信元:61.89.11.92 0
現stats.2ch.netってそもそもどんな方法だっけ。

1秒で同じIPアドレスから1000アクセス以上とかするような奴はすぐに弾けるのはいいね。
623名無しさん@お腹いっぱい。(もんじゃ):2012/01/16(月) 00:30:27.28 発信元:60.33.70.91 0
>現stats.2ch.netのようなパイプ

つまり専用の処理鯖を立ててそこにログ集めていろいろチェックするってこと?
624ピロリ(WiMAX):2012/01/16(月) 00:33:18.63 発信元:49.133.85.144 0
ログ吐き出すやつを横取りすればいいんじゃねーの
バーボンは各サーバ毎にやるのがしきたりー
引っかかったIPは全サーバに配布するけどネ
625名無しさん@お腹いっぱい。(もんじゃ):2012/01/16(月) 00:37:56.09 発信元:60.33.70.91 0
ふむ

ファイルのケツから読み出すtailコマンドってファイルの大きさ関係あるのかな?
ないなら

tail -1000 ログ名 > 直近1000アクセスログ

で出力したのをチェックすればかなり負担は軽くなる→実質リアルタイムのチェックが出来るようになるけど
626未承諾広告※ ◆Rock54hC3G0C (西日本):2012/01/16(月) 00:53:44.67 発信元:219.117.239.35 0 BE:1306962-PLT(23506)
apacheの吐き出すログ先をパイプ指定にしてあげて、そこからBBXみたいにIPアドレスを送りつけて同じような仕組みにする。(DNS式)
でもってread.*にてDNS問い合わせするみたいな?
http://httpd.apache.org/docs/2.2/logs.html#piped
627名無しさん@お腹いっぱい。(もんじゃ):2012/01/16(月) 00:54:49.13 発信元:60.33.70.91 0
421775482バイト test.txt
*12570454バイト test2.txt

time tail -1000 test.txt |head > /dev/null
real 0m0.003s
user 0m0.002s
sys 0m0.001s

time tail -1000 test2.txt |head > /dev/null
real 0m0.002s
user 0m0.001s
sys 0m0.002s


400Mと12Mのファイルをtail -1000で読みだしてみたけど時間はほとんど変わらなかった

リロードボボンもこの方法でチェック前にケツから一定の行数を出力して、それを今までのチェックしているperlプログラムで読み出す
ってのじゃダメかな? statsの仕組みを理解していないから変なこと言っていたらスマソ
628名無しさん@お腹いっぱい。(たこやき):2012/01/16(月) 03:08:28.52 発信元:58.188.112.77 0
CustomLogで%hだけ書き込むの追加して、
ログファイルは1分ごとに替えてやればいいんでね
11:11頃、11:12頃、...のIPアドレスだけのログが1分ごとに出来るから
cronで回すスクリプトで集計鯖に送って用済み分掃除
送るのはrsyncみたいなの動かしておいて定期的に取りに行かせても可
629ピロリ(WiMAX):2012/01/16(月) 05:15:55.15 発信元:49.134.223.130 0
たまにコード書かないとマジで忘れるな
もったいないもったいない
630名無しさん@お腹いっぱい。(しうまい):2012/01/16(月) 05:23:33.63 発信元:180.31.37.114 0
横取りしてやるならIPの出現数をカウントしてn時間にm回でアウト判定とかにするの?
n時間をあまり長くするとリアルタイムの意味が薄れると思うけど
631ピロリ(WiMAX):2012/01/16(月) 05:25:15.69 発信元:49.134.223.130 0
現在10min毎だから1min毎にはしたいなと、
632名無しさん@お腹いっぱい。(たこやき):2012/01/16(月) 07:55:59.99 発信元:58.188.112.77 0
628のだとログ管理はApache謹製だしsortとuniqだけでIPアドレスと回数が抽出できるから楽だべ
633名無しさん@お腹いっぱい。(さくらんぼ):2012/01/16(月) 12:18:50.04 発信元:222.3.27.24 0 BE:49594526-DIA(100077)
>>632
uniq -cで何回って調べる感じ?
634 ◆cZfSunOs.U (アメリカ合衆国):2012/01/16(月) 12:41:00.48 発信元:206.223.151.75 0
パイプ使う方式だと,そのプログラムを注意深く作らないと
昔の logbuffer のように高アクセス時に Apache が詰まる恐れがあります.
今の logbuffer のように aio を使うなどすればいいんでしょうが.

一方ファイルに書き出す方式でファイル名をローテーションするのなら,
Apache に SIGHUP 送る必要があって,しかもそれが1分おきだと
負荷的にもあまりよくない状態になりそうです.ファイル名は固定して,
データ読んだ後にファイルサイズを 0 に truncate するのなら,
その必要がなくなるのでいいかもですが.
635名無しさん@お腹いっぱい。(茸):2012/01/16(月) 18:05:23.69 発信元:27.230.199.97 0
apachetopは重たいコマンドなのかな
データを拾って上位3名様ご招待とか
636名無しさん@お腹いっぱい。(日本):2012/01/16(月) 19:04:28.65 発信元:114.160.23.53 0
http://temp.ula.cc/
こんなの作ってみました。
637ピロリ(WiMAX):2012/01/16(月) 19:47:13.71 発信元:49.134.231.40 0
>>634
どもども、わかりやした
今週はいないので来週にでも実験開始してみまーす