Skip to content

Instantly share code, notes, and snippets.

@Hiroya-W
Created August 12, 2021 14:51
Show Gist options
  • Save Hiroya-W/a8fa2dc928c263427b03d29852eb3dc3 to your computer and use it in GitHub Desktop.
Save Hiroya-W/a8fa2dc928c263427b03d29852eb3dc3 to your computer and use it in GitHub Desktop.
isucon10qで使えそうなMakefile
DATE:=$(shell date +%Y%m%d-%H%M%S)
CD:=$(CURDIR)
PROJECT_ROOT:=/home/isucon/isuumo
# env.shに合わせて変更する
DB_HOST:=127.0.0.1
DB_PORT:=3306
DB_USER:=isucon
DB_PASS:=isucon
DB_NAME:=isuumo
MYSQL_CMD:=mysql -h$(DB_HOST) -P$(DB_PORT) -u$(DB_USER) -p$(DB_PASS) $(DB_NAME)
NGINX_LOG:=/tmp/access.log
MYSQL_LOG:=/tmp/slow-query.log
.PHONY: bench
bench: marker restart slow-off
@echo "\e[32mベンチの準備が完了しました\e[m"
.PHONY: bench-dev
bench-dev: log-reset marker restart slow-on
@echo "\e[32mベンチの準備が完了しました\e[m"
.PHONY: marker 
marker: deployment_marker.sh
@echo "\e[32mデプロイメントマーカーを設定します\e[m"
sh $(PROJECT_ROOT)/webapp/deployment_marker.sh
@echo "\n"
deployment_marker.sh:
@echo "\e[32mdeployment_marker.shを取得します\e[m"
wget https://git.io/JUCR5 -O deployment_marker.sh
.PHONY: log-reset
log-reset:
@echo "\e[32mlogファイルを初期化します\e[m"
mkdir -p ~/logs/$(DATE)
-sudo mv -f $(MYSQL_LOG) ~/logs/$(DATE)/slow-query.txt
-sudo mv -f $(NGINX_LOG) ~/logs/$(DATE)/access.txt
echo -n > $(MYSQL_LOG)
echo -n > $(NGINX_LOG)
.PHONY: pull
pull:
@echo "\e[32mリポジトリを更新します\e[m"
git pull origin master
.PHONY: cat
cat: slow-log alp
.PHONY: slow-log
slow-log:
@echo "\e[32mslow-logsを出力します\e[m"
sudo pt-query-digest --limit=100 --filter '$$event->{bytes} <= 100000' $(MYSQL_LOG) | discocat
.PHONY: alp
alp:
@echo "\e[32maccess logをalpで出力します\e[m"
sudo cat $(NGINX_LOG) | alp ltsv --sort sum --reverse | discocat
.PHONY: restart
restart:
@echo "\e[32mサービスを再起動します\e[m"
sudo systemctl restart mysql.service
sudo systemctl restart nginx.service
sudo systemctl restart isuumo.nodejs.service
.PHONY: slow-on
slow-on:
@echo "\e[32mMySQL slow-querry ONにします\e[m"
sudo mysql -e "set global slow_query_log_file = '$(MYSQL_LOG)'; set global long_query_time = 0; set global slow_query_log = ON;"
# sudo $(MYSQL_CMD) -e "set global slow_query_log_file = '$(MYSQL_LOG)'; set global long_query_time = 0; set global slow_query_log = ON;"
sudo mysql -e "show variables like 'slow%';"
# sudo $(MYSQL_CMD) -e "show variables like 'slow%';"
.PHONY: slow-off
slow-off:
@echo "\e[32mMySQL slow-querry OFFにします\e[m"
sudo mysql -e "set global slow_query_log = OFF;"
# sudo $(MYSQL_CMD) -e "set global slow_query_log = OFF;"
sudo mysql -e "show variables like 'slow%';"
# sudo $(MYSQL_CMD) -e "show variables like 'slow%';"
.PHONY: setup
setup:
@echo "\e[32mSETUPを開始します\e[m"
@echo "\e[32m - Fishのリポジトリを追加します\e[m"
sudo apt-add-repository ppa:fish-shell/release-3 -y
sudo apt update
@echo "\e[32m - 必要なパッケージをインストールします\e[m"
sudo apt install -y percona-toolkit fish git unzip dstat
@echo "\e[32m - fishを起動するように設定します\e[m"
echo exec fish >> /home/isucon/.bashrc
@echo "\e[32m - Gitのユーザ名を設定します\e[m"
git config --global user.name "isucon"
@echo "\e[32m - vimrcをちょっとだけ良くします\e[m"
wget https://gist.githubusercontent.com/Hiroya-W/8d6f6dd6667f14b8182c2144c68fdcd3/raw/e71f3074d0cd452108eb3d0b2e9c60bc27c3c89c/.vimrc
mv .vimrc ~/.vimrc
@echo "\e[32m - alpをインストールします\e[m"
wget https://github.com/tkuchiki/alp/releases/download/v1.0.7/alp_linux_amd64.zip
unzip alp_linux_amd64.zip -d alp_linux_amd64
sudo install ./alp_linux_amd64/alp /usr/local/bin
rm -r alp_linux_amd64 alp_linux_amd64.zip
@echo "\e[32m - discordcatをインストールします\e[m"
# GO111MODULE=on go get -u github.com/wan-nyan-wan/discocat
go install github.com/wan-nyan-wan/discocat
mkdir -p ~/.config/discocat
cp $HOME/go/src/github.com/wan-nyan-wan/discocat/config.yml.sample ~/.config/discocat/config.yml
@echo "\e[32mSETUPが完了しました\e[m"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment