# change login shell
chsh
# => Login Shell [/bin/sh]: /bin/bash
# bash completion
sudo apt-get install bash-completion
wget percona.com/get/percona-toolkit.deb
sudo apt-get install libio-socket-ssl-perl libnet-ssleay-perl libterm-readkey-perl
sudo dpkg -i percona-toolkit.deb
dpkg -s percona-toolkit
# wgetの場合
wget https://github.com/matsuu/kataribe/releases/download/v0.3.0/linux_386.zip
# curlの場合
curl -O https://github.com/matsuu/kataribe/releases/download/v0.3.0/linux_386.zip
# unzipが無いかも
unzip linux_386.zip
sudo apt-get install dstat
gem 'rack-lineprof'
# bundle install
require 'rack-lineprof'
class MyApp < Sinatra::Base
use Rack::Lineprof, profile: 'app.rb' # 測定したいアプリケーションファイル名を指定
end
use [database name];
SELECT table_name, engine, table_rows, avg_row_length, floor((data_length+index_length)/1024/1024) as allMB, floor((data_length)/1024/1024) as dMB, floor((index_length)/1024/1024) as iMB FROM information_schema.tables WHERE table_schema=database() ORDER BY (data_length+index_length) DESC;
# ログインユーザー
w
# cpu数
grep processor /proc/cpuinfo
# メモリ
free -m
# プロセス一覧
ps auxf
# ネットワーク
ip a
# ファイルシステム
df -Th
# ポート番号
lsof -p <pid>
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 0 # or 2
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/mysqld-slow.log
long_query_time = 0
log-queries-not-using-indexes = 1
innodb_buffer_pool_size = 1G # スペックに合わせて調整
upstream app {
server 127.0.0.1:8080;
keepalive 64;
}
server {
listen 80;
client_max_body_size 10m;
root /home/isucon/private_isu/webapp/public/;
location / {
try_files $uri @app;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
try_files $uri @app;
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
etag off;
}
location @app {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://app;
}
}
# unicorn
worker_processes 2 # ワーカープロセス数
# puma
workers 2 # ワーカープロセス数
#!/bin/bash
set -ex
IPADDR=$1
USERNAME=$USER
ssh isucon@$IPADDR "echo 'deploying...' && cd /home/isucon/deploy && bundle install && git pull && sudo systemctl restart mysql && sudo systemctl restart isuxi.ruby && sudo systemctl restart nginx && sudo sysctl -p && echo 'deploy done'"
#!/bin/bash
set -ex
if [ -f /var/lib/mysql/mysqld-slow.log ]; then
sudo mv /var/lib/mysql/mysqld-slow.log /var/lib/mysql/mysqld-slow.log.$(date "+%Y%m%d_%H%M%S")
fi
if [ -f /var/log/nginx/access_log ]; then
sudo mv /var/log/nginx/access.log /var/log/nginx/access.log.$(date "+%Y%m%d_%H%M%S")
fi
sudo systemctl restart mysql
# sudo service memcached restart
# bundle install
sudo systemctl restart isuxi.ruby
sudo systemctl restart nginx
top
dstat -tlnr --top-cpu --top-mem --top-io --top-bio # 全般
dstat -tplmsra # 全般
dstat -tplmsraf # 全般2
dstat -taf --top-cpu # CPU
dstat -tdng --file --lock --top-io --top-bio # io
dstat -t -gs --mem --vm --ipc --top-mem # memory
cat /var/log/nginx/access.log | /tmp/kataribe/kataribe > /tmp/kataribe.log.$(date "+%Y%m%d_%H%M%S")
pt-query-digest /var/lib/mysql/mysqld-slow.log > /tmp/mysql-slow.log.$(date "+%Y%m%d_%H%M%S")