歩行訓練

おいっちにー!

Media wikiを別サーバに移行したら元のサーバにリダイレクトしたのをなんとかした

IPが別のサーバにMediaWikiを移転したらどうも元のサーバにリダイレクトされるといわれた。

ドメインはIP直なので、とりあえずそのIPでドキュメントルートあたりをgrepしてみるとに。

 [root@hoge html]# grep 古いIP *
LocalSettings.php:$wgServer           = "http:// 古いIP ";
LocalSettings.php:$wgEmergencyContact = "hoge@ 古いIP ";
LocalSettings.php:$wgPasswordSender   = "hoge@ 古いIP ";
ma.php:$baseAddr = "http:// 古いIP /";
mi.php:$baseAddr = "http:// 古いIP /";

 とまあ5か所ぐらい出てきたのでそれを書き換えた。

その後リダイレクトはされてないので、まあ問題は解決したんじゃないかと思う。

Eclipse で Gradle さんで JAVA_HOME

eclipse で gradle を触っていた時に

Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable to point to the according directory.

 と言われ、JAVA_HOMEは設定してるだろJK・・・と思いながらちょっと詰まった。

 

これはどうも別のJAVA_HOMEらしい。で

ウインドウ→設定→Gradle→引数

Java Homeの欄

Workspace JRE:

f:id:umetyuu:20150414011710p:plain

を設定すれば動いた。

さてhttpd.conf をいじる

KeepAlive On
MaxKeepAliveRequests 30
KeepAliveTimeOut 1

1

Concurrency Level:      100
Time taken for tests:   46.054 seconds
Complete requests:      10000
Failed requests:        579
   (Connect: 0, Receive: 0, Length: 579, Exceptions: 0)
Write errors:           0
Total transferred:      144288194 bytes
HTML transferred:       141508194 bytes
Requests per second:    217.14 [#/sec] (mean)
Time per request:       460.539 [ms] (mean)
Time per request:       4.605 [ms] (mean, across all concurrent requests)
Transfer rate:          3059.60 [Kbytes/sec] received

2

Concurrency Level:      100
Time taken for tests:   39.518 seconds
Complete requests:      10000
Failed requests:        906
   (Connect: 0, Receive: 0, Length: 906, Exceptions: 0)
Write errors:           0
Total transferred:      144185516 bytes
HTML transferred:       141405516 bytes
Requests per second:    253.05 [#/sec] (mean)
Time per request:       395.176 [ms] (mean)
Time per request:       3.952 [ms] (mean, across all concurrent requests)
Transfer rate:          3563.12 [Kbytes/sec] received

かわらんね・・・

並列を500に

Concurrency Level:      500
Time taken for tests:   37.651 seconds
Complete requests:      10000
Failed requests:        1380
   (Connect: 0, Receive: 0, Length: 1380, Exceptions: 0)
Write errors:           0
Total transferred:      144045142 bytes
HTML transferred:       141264864 bytes
Requests per second:    265.59 [#/sec] (mean)
Time per request:       1882.566 [ms] (mean)
Time per request:       3.765 [ms] (mean, across all concurrent requests)
Transfer rate:          3736.10 [Kbytes/sec] received

700

Concurrency Level:      700
Time taken for tests:   54.106 seconds
Complete requests:      10000
Failed requests:        895
   (Connect: 0, Receive: 0, Length: 895, Exceptions: 0)
Write errors:           0
Total transferred:      144188970 bytes
HTML transferred:       141408970 bytes
Requests per second:    184.82 [#/sec] (mean)
Time per request:       3787.435 [ms] (mean)
Time per request:       5.411 [ms] (mean, across all concurrent requests)
Transfer rate:          2602.47 [Kbytes/sec] received

 

本陣を触る。

Mac clients 200 / thred per child 50 = 4 つのプロセスが出来るはず?

最初から4つ作っておいてみる。

<IfModule mpm_worker_module>
    StartServers          4
    MaxClients          200
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      50
    MaxRequestsPerChild   0
</IfModule>

確かにそうなってる?

# ps aux|grep http
root     13520  0.0  0.1 109536  3712 pts/5    T    17:48   0:00 vim extra/httpd-mpm.conf
root     16093  0.0  0.2 132064  4516 ?        Ss   18:00   0:00 /usr/local/httpd-2.2.16/bin/httpd -k start
daemon   16310  5.7  0.4 1389792 10068 ?       S    18:00   0:02 /usr/local/httpd-2.2.16/bin/httpd -k start
daemon   16510  5.1  0.4 735916  9764 ?        Sl   18:01   0:01 /usr/local/httpd-2.2.16/bin/httpd -k start
daemon   16567  5.2  0.4 735476  9256 ?        Sl   18:01   0:01 /usr/local/httpd-2.2.16/bin/httpd -k start
root     16722  0.0  0.0  65392   844 pts/5    S+   18:01   0:00 grep http

ぼちぼち。

Concurrency Level:      100
Time taken for tests:   37.485 seconds
Complete requests:      10000
Failed requests:        801
   (Connect: 0, Receive: 0, Length: 801, Exceptions: 0)
Write errors:           0
Total transferred:      144218486 bytes
HTML transferred:       141438486 bytes
Requests per second:    266.78 [#/sec] (mean)
Time per request:       374.846 [ms] (mean)
Time per request:       3.748 [ms] (mean, across all concurrent requests)
Transfer rate:          3757.24 [Kbytes/sec] received

デフォルトと同じく6つプロセスが立つようにしてみる

<IfModule mpm_worker_module>
    StartServers          4
    MaxClients          300
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      50
    MaxRequestsPerChild   0
</IfModule>

 プロセスは最初4→2、で高負荷になると6に戻った。

# ps aux|grep http
root     13520  0.0  0.1 109536  3712 pts/5    T    17:48   0:00 vim extra/httpd-mpm.conf
root     17959  0.0  0.2 132064  4524 ?        Ss   18:08   0:00 /usr/local/httpd-2.2.16/bin/httpd -k start
daemon   18749  2.0  0.4 800996  9460 ?        Sl   18:10   0:02 /usr/local/httpd-2.2.16/bin/httpd -k start
daemon   18981  6.3  0.4 736028  9220 ?        Sl   18:12   0:00 /usr/local/httpd-2.2.16/bin/httpd -k start
daemon   19038  5.5  0.3 800480  8196 ?        Sl   18:12   0:00 /usr/local/httpd-2.2.16/bin/httpd -k start
root     19189  0.0  0.0  65392   840 pts/5    S+   18:12   0:00 grep http
# cat /proc/17959/status
Name:   httpd
State:  S (sleeping)
SleepAVG:       78%
Tgid:   17959
Pid:    17959
PPid:   1
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 64
Groups: 0 1 2 3 4 6 10
VmPeak:   132064 kB
VmSize:   132064 kB
VmLck:         0 kB
VmHWM:      4524 kB
VmRSS:      4524 kB
VmData:     2432 kB
VmStk:        84 kB
VmExe:       412 kB
VmLib:      5632 kB
VmPTE:       312 kB
StaBrk: 03ac4000 kB
Brk:    03cde000 kB
StaStk: 7fff1d8446f0 kB

 仮想メモリ的に132MBぐらい?なので10プロセスで1.3Gぐらいメモリを食うのか。

あんまりapacheにメモリは裂けないので、これぐらいで良しとする。

古いアパッチをなんとかチューニングする4 カーネルパラ触るだけ

カーネルパラメータをいじる

デフォルトままの設定。

mpmもデフォルト

<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

1

Concurrency Level:      100
Time taken for tests:   38.576 seconds
Complete requests:      10000
Failed requests:        777
   (Connect: 0, Receive: 0, Length: 777, Exceptions: 0)
Write errors:           0
Total transferred:      144226022 bytes
HTML transferred:       141446022 bytes
Requests per second:    259.23 [#/sec] (mean)
Time per request:       385.757 [ms] (mean)
Time per request:       3.858 [ms] (mean, across all concurrent requests)
Transfer rate:          3651.15 [Kbytes/sec] received

2

Concurrency Level:      100
Time taken for tests:   39.264 seconds
Complete requests:      10000
Failed requests:        806
   (Connect: 0, Receive: 0, Length: 806, Exceptions: 0)
Write errors:           0
Total transferred:      144216916 bytes
HTML transferred:       141436916 bytes
Requests per second:    254.69 [#/sec] (mean)
Time per request:       392.641 [ms] (mean)
Time per request:       3.926 [ms] (mean, across all concurrent requests)
Transfer rate:          3586.91 [Kbytes/sec] received

3

oncurrency Level:      100
Time taken for tests:   39.463 seconds
Complete requests:      10000
Failed requests:        892
   (Connect: 0, Receive: 0, Length: 892, Exceptions: 0)
Write errors:           0
Total transferred:      144189912 bytes
HTML transferred:       141409912 bytes
Requests per second:    253.40 [#/sec] (mean)
Time per request:       394.633 [ms] (mean)
Time per request:       3.946 [ms] (mean, across all concurrent requests)
Transfer rate:          3568.13 [Kbytes/sec] received

値がよくなったのは送り手のカーネルパラメータをいじったため。

ここで適当にぶっこむ

/etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_max_syn_backlog = 20480

net.core.somaxconn = 20480

net.ipv4.tcp_rmem = 4096 873800 1747600

net.ipv4.tcp_wmem = 4096 873800 1747600

net.ipv4.tcp_mem = 2048000 2048000 2048000

 

kernel.sem = 250 32000 100 128

fs.file-max = 6815744

fs.aio-max-nr = 1048576

kernel.shmmni = 4096

net.ipv4.ip_local_port_range = 11000 65500

 

net.core.rmem_default = 1048576

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

 

vm.swappiness = 0

 で

]# /sbin/sysctl -p

apacheも再起動しておく

1.

Concurrency Level:      100
Time taken for tests:   41.083 seconds
Complete requests:      10000
Failed requests:        938
   (Connect: 0, Receive: 0, Length: 938, Exceptions: 0)
Write errors:           0
Total transferred:      144175468 bytes
HTML transferred:       141395468 bytes
Requests per second:    243.41 [#/sec] (mean)
Time per request:       410.828 [ms] (mean)
Time per request:       4.108 [ms] (mean, across all concurrent requests)
Transfer rate:          3427.14 [Kbytes/sec] received

2

Concurrency Level:      100
Time taken for tests:   39.346 seconds
Complete requests:      10000
Failed requests:        856
   (Connect: 0, Receive: 0, Length: 856, Exceptions: 0)
Write errors:           0
Total transferred:      144201216 bytes
HTML transferred:       141421216 bytes
Requests per second:    254.16 [#/sec] (mean)
Time per request:       393.458 [ms] (mean)
Time per request:       3.935 [ms] (mean, across all concurrent requests)
Transfer rate:          3579.07 [Kbytes/sec] received

3

Concurrency Level:      100
Time taken for tests:   38.429 seconds
Complete requests:      10000
Failed requests:        876
   (Connect: 0, Receive: 0, Length: 876, Exceptions: 0)
Write errors:           0
Total transferred:      144194936 bytes
HTML transferred:       141414936 bytes
Requests per second:    260.22 [#/sec] (mean)
Time per request:       384.291 [ms] (mean)
Time per request:       3.843 [ms] (mean, across all concurrent requests)
Transfer rate:          3664.29 [Kbytes/sec] received

あんまかわらん。

Concurrency Level:      200
Time taken for tests:   37.371 seconds
Complete requests:      10000
Failed requests:        509
   (Connect: 0, Receive: 0, Length: 509, Exceptions: 0)
Write errors:           0
Total transferred:      144310174 bytes
HTML transferred:       141530174 bytes
Requests per second:    267.59 [#/sec] (mean)
Time per request:       747.411 [ms] (mean)
Time per request:       3.737 [ms] (mean, across all concurrent requests)
Transfer rate:          3771.09 [Kbytes/sec] received

 

Concurrency Level:      500
Time taken for tests:   56.050 seconds
Complete requests:      10000
Failed requests:        1358
   (Connect: 0, Receive: 0, Length: 1358, Exceptions: 0)
Write errors:           0
Total transferred:      144047932 bytes
HTML transferred:       141267654 bytes
Requests per second:    178.41 [#/sec] (mean)
Time per request:       2802.515 [ms] (mean)
Time per request:       5.605 [ms] (mean, across all concurrent requests)
Transfer rate:          2509.74 [Kbytes/sec] received

結局何をしたのか

qiita.com

TIME_WAIT のソケットのリサイクル方法

reuse はプロトコルの概念から安全な方法らしい。recycleはなる早でリサイクルする。色々と問題があると他のページに書いてある。

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 0

FIN のタイムアウト時間。攻めの1秒

net.ipv4.tcp_fin_timeout = 1

このあたりのブログから参考に。

Blog Alpha Networking: kernelチューニング

Linux(CentOS6)カーネルチューニングのメモ | ちゃんと覚えておけよ?

ソケット当たりのSYNを受け付けてACKを受け取っていない状態のコネクションの保持可能数

net.ipv4.tcp_max_syn_backlog = 20480

TCPソケットが受け付けた接続要求を格納するキューの最大長を設定。

net.core.somaxconn = 20480

qiita.com

ソケット1つ1つが使うバッファのサイズ。
左から順に min, deault, max.

net.ipv4.tcp_rmem = 4096 873800 1747600

net.ipv4.tcp_wmem = 4096 873800 1747600

システム全体で TCP が消費できるメモリの最大値、単位はページとのこと。

min/pressure/max。全部一緒ってどうなるんだこれ。

net.ipv4.tcp_mem = 2048000 2048000 2048000

thinkit.co.jp

セマフォ。4つの意味は上のページ参考。でもわからん。

kernel.sem = 250 32000 100 128

共有メモリのセグメント数

kernel.shmmni = 4096

thinkit.co.jp

システム全体のファイルディスクリプタの上限

fs.file-max = 6815744

5.4. 容量のチューニング

すべてのアクティブな非同期 I/O コンテキスト内で許可されるイベントの最大数。なんやそれ。

インストール前の作業を手動で完了する方法

この値は同時未処理リクエストを制限するもので、I/Oサブシステムの障害を防ぐために設定する必要があります。

fs.aio-max-nr = 1048576

b.l0g.jp

これはわかるわ。

net.ipv4.ip_local_port_range = 11000 65500

Note - ソケットバッファのチューニング

勘所がわからん。

net.core.rmem_default = 1048576

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

qiita.com

スワップすんなよ、ってことか。

vm.swappiness = 0