タグ別アーカイブ: 高速化

Windowsのネットワークを高速化する方法

WindowsXP以降のOSの場合、イーサネットコントローラのチェックサムが有効になっている事でネットワーク速度が重たくなっていることがあります。
元々チェックサムは、通信パケットの整合性をチェックする為の機能で、通常は安全上ONに設定されています。
これらの設定を無効化し、OSのネットワーク速度最適化機能の設定を変更することで、ネットワーク速度を改善出来るかもしれません。

1.スタートメニュー→コントロールパネル→ネットワークと共有センター→使用しているネットワークアダプタ→プロパティ→構成く(別ウィンドウ)→詳細設定
以下の項目をすべて無効とする。
(下記にない項目は飛ばしてOK)
・IPSec オフロード
・IPv4チェックサム オフロード
・TCPチェックサム オフロード(IPv4)
・TCPチェックサム オフロード(IPv6)
・UDPチェックサム オフロード(IPv4)
・UDPチェックサム オフロード(IPv6)
・ジャンボフレーム
・受信側スケーリング
・大量送信オフロード(IPv4)
・大量送信オフロードv2(IPv4)
・大量送信オフロードv2(IPv6)

2.ネットワークアダプタの自動メトリックを手動で設定
・スタートメニュー→コントロールパネル→ネットワークと共有センター→使用しているネットワークアダプタ→プロパティ→インターネットプロトコル 4(TCP/IPv4)のプロパティを開く。
・出てきたプロパティの下部にある「詳細設定」を開く。
・出てきた画面の一番下の「自動メトリック」のチェックを外し、値を「10」と入力する
・IPv6での通信を必要としていない場合、ネットワークアダプタのプロパティ中の「インターネットプロトコル 6(TCP/IPv6)」のチェックを外す
※1 プライベートIPアドレスが固定の場合、上記画面のデフォルトゲートウェイ欄からゲートウェイのIPアドレスをクリックし「編集」を押す→自動メトリックのチェックを外し、値に「10」を入れる。
※2 ワイヤレス等ネットワークアダプタを複数使っている場合、各ネットワークアダプタ別のメトリック値に優先順位をつけて11~20辺りの値をつけること。
※3 IPv6のプロパティをOFFにした場合、ブラウザ設定のIPv6接続設定とルータのIPv6通信もOFFにすること。

3.ネットワーク自動最適化機能のレベルを変更する。
・DOSプロンプトを管理者権限で開く。
・以下のコマンドを入力する。

#Receive Side Scaling(RSS)の無効化
netsh int tcp set global rss=disabled
#TCP Chimney Offloadの無効化
netsh int tcp set global chimney=disabled
#Network Direct Memory Access(NetDMA)の無効化
netsh int tcp set global netdma=disabled
#アドオン輻輳制御プロバイダーの切り替え
#Windows8.1以降の方は、手順3.5を参照
netsh interface tcp set global congestionprovider=ctcp
#受信ウィンドウ自動チューニングレベルの変更
netsh int tcp set global autotuninglevel=normal
#(上記で効果が得られなかった場合)
netsh int tcp set global autotuninglevel=highlyrestricted
#設定反映の確認
netsh int tcp show global

3.5.Windows8.1以降のOSでアドオン輻輳制御プロバイダーをCTCPにする方法
・以下のソースコードをテキストエディタにコピペし「CTCP.reg」を作成、実行する。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\0]
"0200"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"1700"=hex:00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

・アドオン輻輳制御プロバイダーをCTCPにする

set supplemental congestionprovider=ctcp

・再起動後、設定反映を確認する

netsh int tcp show global

4.レジストリエディタで、ネットワークデバイスのチェックサムをOFFにする。
・スタートメニュー→ファイル名を指定して実行→regedit
・開いたレジストリエディタで以下のパスへ移動。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
・DWARD値「DisableTaskOffload」が見つからなかったら、新規作成する(16進数で)。
・DWARD値「DisableTaskOffload」の値を「1」にする。

5.レジストリエディタで下記のパスに移動し、新規DWARD値を作成する(10進数で)。
・HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windowsNT\CurrentVersion\NetworkCards\8
上記パス中のキー「ServiceName」にイーサネットデバイスのインターフェースIDが入っているので、これをメモる。
HKEY_LOCAL_MACHINE\SYSTEM\CorrentControlSet\Services\Tcpip\Parameters\Interfaces\{先程メモったインターフェースID}」
このパスの中にDWARD値「MTU」を作り、10進数で「1454」と値を入れる。

・HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\AFD\Parameters
上記パス中に下記の通りの名前でDRAWD値を作成し、値を10進数で入力する。
– DefaultReceiveWindow:260176
– DefaultSendWindow:260176
– LargeBufferSize:32768
– MediumBufferSize:6016
– SmallBufferSize:256
– TransmitWorker:32

5.インターネットセキュリティソフト(若しくはアンチウイルスソフト)を常駐させている場合、WindowsDefenerの自動スキャンをOFFにする。

6.再起動

さて、ネットワーク速度が改善されたかな?
もしあまり改善されていないのなら、ブラウザのネットワーク設定を見なおしてみましょう。
それでもダメなら、屋内配線の見直しやルータの設定とファームウェア更新確認、プロバイダのDNSサーバが生きているかの確認等をしてみましょう。
最悪、回線事業者のサポートダイヤルで回線速度のリモートチェックを依頼し
プロバイダなしでの速度が十分に出ていたら、今ご利用のプロバイダを疑いましょう。

回線速度の計測はコチラから。
http://netspeed.studio-radish.com/

WordPressをオブジェクトキャッシュで高速化

WordPressで作った動的コンテンツのページロード高速化に於いて、ページキャッシュプラグインはいらない子である。
動的Webページ自体のキャッシュ化により、外部ソーシャルメディアとの連携や外部拡張機能諸々が動作しなくなる事に加え
ページ中に埋め込んでいる動的コンテンツ(カレンダや人気記事リスト、CAPTCHA、Zenback、AdSence等)さえキャッシュ化の対象となり、正常に動作しなくなってしまうからだ。

そこで、WordPressのページロード高速化の為のプラグインを以下に絞った。
・DBキャッシュ:DB cache reloaded
・画像のキャッシュ化:WordPress高速化(記事中のサンプルソース)
・オブジェクトキャッシュ:APC Object Cache Backend + Tribe Object Cache
※1 APC Object Cache Backendは、アーカイブ中のobject-cache.phpを/wp-content/上にアップロードするだけでOKです。
※2 オブジェクトキャッシュプラグインはAPC(又はXcacheかWinCache)とmemcachedを使用しますが、レンタルサーバ等でmemcachedが利用出来なくてもAPC(php実行コードキャッシュエンジン)を有効に出来ればOKです。
※3 php5.5以降の場合、php実行コードキャッシュエンジンはAPCとOPCacheを併用しても構いません。

最後に、WP-Optimizeでゴミデータを取り除きテーブルの最適化をして完了。

そしたら、案件サイトが全て読み込み1秒台になりました!!ヾ(o゚Д゚o)ノ

然し、root権限のあるサーバでWebページの読み込みを更に高速化させるならば・・・、Apacheモジュール「mod_pagespeed」の導入とかね。

Linuxのネットワーク高速化

/etc/sysctl.confの末端に以下を追加し、OS起動時にも起こされる「sysctl -p」で反映。

#sudo vi /etc/sysctl.conf
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 20
net.ipv4.tcp_keepalive_probes = 4
net.ipv4.tcp_keepalive_intvl = 5
net.core.rmem_default = 873800
net.core.wmem_default = 873800
net.core.rmem_max = 1747600
net.core.wmem_max = 1747600
net.core.optmem_max = 20480
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
#sudo sysctl -p

極力簡単な方法で、Webページの読み込み速度を向上させる

●Apache
吐き出されるテキストファイル全てにGZIP圧縮をかけた。

#vi /etc/httpd/cond.d/deflate.conf
<Location />
	<IfModule mod_headers.c>
		Header append Vary User-Agent env=!dont-vary
	</IfModule>
	<IfModule mod_deflate.c>
		SetOutputFilter DEFLATE
		BrowserMatch ^Mozilla/4\.0[678] no-gzip
		BrowserMatch ^Mozilla/4 gzip-only-text/html
		BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
		SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
		SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
		AddOutputFilterByType DEFLATE text/plain
		AddOutputFilterByType DEFLATE text/html
		AddOutputFilterByType DEFLATE text/xml
		AddOutputFilterByType DEFLATE text/css
		AddOutputFilterByType DEFLATE text/javascript
		AddOutputFilterByType DEFLATE application/xhtml+xml
		AddOutputFilterByType DEFLATE application/xml
		AddOutputFilterByType DEFLATE application/rss+xml
		AddOutputFilterByType DEFLATE application/atom_xml
		AddOutputFilterByType DEFLATE application/javascript
		AddOutputFilterByType DEFLATE application/x-javascript
		AddOutputFilterByType DEFLATE application/x-httpd-php
	</IfModule>
    <ifModule mod_expires.c>
        ExpiresActive On
    
        ExpiresDefault "access plus 1 seconds"
        ExpiresByType text/html "access plus 1 seconds"
        ExpiresByType image/gif "access plus 2592000 seconds"
        ExpiresByType image/jpeg "access plus 2592000 seconds"
        ExpiresByType image/png "access plus 2592000 seconds"
        ExpiresByType image/x-icon "access plus 2592000 seconds"
        ExpiresByType text/css "access plus 604800 seconds"
        ExpiresByType text/javascript "access plus 216000 seconds"
        ExpiresByType application/x-javascript "access plus 216000 seconds"
        ExpiresByType application/x-shockwave-flash "access plus 216000 seconds"
    </ifModule>
</Location>

※上記コンフィグのLocationの囲いを取っ払って、.htaccessに記載してもOK。

●php
CentOS標準のバージョンが5.3だったのを、remiレポジトリ導入で5.5にyumアップデート。

●中間キャッシュエンジン導入
php5.3まではAPCかeAcceleratorかxcacheの三択だったが、
php5.5になってからは、「OPcache」が標準導入され
リソースを漁っている内に、OPcacheが今後メジャーなキャッシュエンジンになっていくだろうと確信を得て導入。
っつか、OPcacheってphp5.2からPECLで使えたのね。

#vi /etc/php.d/opcache.conf
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_string_buffer=0
opcache.max_accelerated_files=5000
opcache.fast_shutdown=1

●php内のデータオブジェクト・セッション等のキャッシュ
PECL::memcachedを使用

●その他導入を考えたけど・・・
・phpをFPM+Fast-CGIモジュールで動かそうかとも考えていたが、標準と大差がなかったので今回は省略。
セキュアなWebシステムの運用をするわけでもなければ、Apacheモジュール版のphpエンジンで十分です。

●WordPress高速化
以下を参照されたし。
http://www.10yendama.com/archives/740