キモブロ

Please spy check please, Fucking retard

本日の作業メモ

passenger-memory-statsコマンドが便利

passengerと、http, nginxのメモリ使用量が一発で見れるツール

このデータを参考にhttpd.confをいじって使ってないモジュールを外しまくってメモリ使用量を落としまくった。(ちなみにkymt.meの)

具体的にはこんな感じ↓

#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so

#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
# ログのカスタマイズ
LoadModule log_config_module modules/mod_log_config.so
# 入出力バイト数を計測
#LoadModule logio_module modules/mod_logio.so
# 環境変数操作系 SetEnv
LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
# Compresser
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
# SetEnvIf
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
# server-status
#LoadModule status_module modules/mod_status.so
# Options +Indexes
LoadModule autoindex_module modules/mod_autoindex.so
# server-info
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
# MultiViews
LoadModule negotiation_module modules/mod_negotiation.so
# 末尾のスラッシュの扱いを是正する
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
# URL入力のスペルミスを是正
#LoadModule speling_module modules/mod_speling.so
# ユーザー専用のディレクトリ
#LoadModule userdir_module modules/mod_userdir.so
# ScriptAlias
LoadModule alias_module modules/mod_alias.so
#LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule version_module modules/mod_version.so

次にmediawikiとphpbb3の最適化をした。

とりあえず現状をabで測定してみたところ、33req/secとひどいありさまだった。そこでPHPの中間コードをキャッシュしてくれるphp-pecl-apcを入れてみた。

$ sudo yum install php-pecl-apc

abでphpbb3をベンチしてみたところ

before: Requests per second:    44.34 [#/sec] (mean)
after: Requests per second:    176.34 [#/sec] (mean)

44req/secが176req/secになった。


さらに、/etc/php.d/apc.iniでAPCの設定を変更し、apc.stat=0にして、毎回phpファイルの更新を検知しないようにしたら更に高速化した

Requests per second:    228.15 [#/sec] (mean)

最後に、mediawikiのLocalSettings.phpを編集し、オンメモリファイルシステム(tmpfs)上にキャッシュを使用するようにした。

$wgCacheDirectory = "/dev/shm/mediawiki/$IP/cache";

みたいな感じで。

これで

Requests per second:    244.60 [#/sec] (mean)

こんな感じに。体感もだいぶ軽くなった。以下そのURL
http://game.kymt.me/forum/
http://game.kymt.me/wiki/

MySQLの設定をした

いろいろ風邪ブロさんのmy.cnfの変数を一個ずつ調べながら設定した。
さくらVPSなのでメモリ1Gしかないのでそんなにメモリ使えないのと、自分のプロダクトにあってる感じにしてみた。

## Plugins
ignore-builtin-innodb
plugin-load=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so

## Added
innodb_buffer_pool_size = 16M

# Innodb
innodb_strict_mode
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_per_table
innodb_file_format = Barracuda

# クエリキャッシュ関連 (同じクエリを連続で発行すると二回目はキャッシュから参照する)
query_cache_limit = 1M
query_cache_min_res_unit = 4k
query_cache_size = 32M
query_cache_type = 1

# Slow Query
slow_query_log # 遅いクエリのログ出力を有効化
slow_query_log_file=mysql-slow.log
long_query_time=0.1 # 0.1秒以上かかったクエリを対象に
log_queries_not_using_indexes = 1 # indexを使用していないクエリをログに出力(for debug)