Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ikosin
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ikosin/b1f4319e354f8fa0d7e8 to your computer and use it in GitHub Desktop.
Save ikosin/b1f4319e354f8fa0d7e8 to your computer and use it in GitHub Desktop.
ISUCON4 予選前の予習結果

Amazon EC2

ssh のセッションタイムアウトを変更

設定ファイル変更

vi /etc/ssh/sshd_config
ClientAliveInterval 240
ClientAliveCountMax 10

設定反映

再起動

service sshd restart

access_log の解析

Webサーバのログをリアルタイムで解析、監視できる『GoAccess』コマンド | 俺的備忘録 〜なんかいろいろ〜

インストール

sudo yum -y install goaccess --enablerepo=epel

実行

sudo goaccess -f /var/log/httpd/access_log

MySQL

MySQL のクエリログ解析

MySQL初心者に贈るインデックスチューニングのポイントまとめ2014|サイバーエージェント 公式エンジニアブログ

スロークエリログの出力

(どこかの) my.cnf

slow_query_log = 1
# slow_query_log_file = mysql-slow.log # 必要に応じて変更
long_query_time = 0.1
log_queries_not_using_indexes

※本番前に設定は消す

スロークエリログ解析ツールのインストール

percona-toolkit の pt-query-digest を入れる (2014/9/27 時点の最新版)

sudo yum -y install perl-Time-HiRes perl-IO-Socket-SSL perl-DBD-MySQL
sudo rpm -ivh http://www.percona.com/redir/downloads/percona-toolkit/2.2.11/RPM/percona-toolkit-2.2.11-1.noarch.rpm

解析

pt-query-digest /var/lib/mysql/SERVERNAME-slow.log > digest.txt

MySQL よく使う構文

# スロークエリログ設定確認
USE information_schema
SELECT * FROM `GLOBAL_VARIABLES` WHERE `VARIABLE_NAME` LIKE '%query%' LIMIT 0,1000;

# テーブル構造の把握
SHOW CREATE TABLE table_name

# インデックスの確認
SHOW INDEX FROM table_name

# インデックスを貼る
ALTER TABLE table_name ADD INDEX index_name (column);

メモ

3306 を開放して Sequel Pro とかのクライアントツール使え!

my.cnf の優先順位

MySQL 5.5.x の my.cnf の種類と読み込み順 | グーフー WordPressのためのLinuxノート

読み込み順 オプションファイル (コンフィギュレーションファイル) 目的
1番目 /etc/my.cnf グローバルオプションの設定
2番目 /etc/mysql/my.cnf グローバルオプションの設定
3番目 SYSCONFDIR※1/etc/my.cnf グローバルオプションの設定
4番目 $MYSQL_HOME※2/my.cnf サーバ固有オプションの設定
5番目 $HOME※3/.my.cnf ユーザ固有オプションの設定

shell からのコマンド実行

mysql -u [user] -p[pass] -D [database] << EOF
[mysql commands]
EOF

注意: ` (バッククォート) は使用しない

Ruby

プロファイリング

Rack applicationのプロファイリングにはrack-lineprofが便利 - k0kubun's blog

インストール

Gemfile

gem 'rack-lineprof', github: 'kainosnoema/rack-lineprof'
bundle install

有効化

app.rb

require 'rack-lineprof'

class [MyApp] < Sinatra::Base
  use Rack::Lineprof, profile: 'app.rb'
end

実行

bundle exec ruby app.rb

確認

4567 ポートを開けて、ブラウザでアクセスし、コンソールログを確認

注意

Sinatraがデフォルトでは外部から繋がらなくなってたよ - Qiita

app.rb

class [MyApp] < Sinatra::Base
  set :environment, :production
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment