この記事は株式会社カオナビ Advent Calendar 2025の23日目の記事です。
ISUCON6予選の過去問にチャレンジした際、思わぬ落とし穴にハマってしまい、肝心のスコアアップに辿り着く前段階でかなり苦戦してしまいました。その内容を共有したいと思います。
言語設定をPHPに切り替える
ISUCONでは競技開始時、特定の言語で実装された参考実装(リファレンス実装)が動いています。これを自分の得意な言語に変更する必要があります。
まずは以下のコマンドでなんの言語環境が動いているかを特定します。
ps aux | grep isucon
そうすると、perlの環境が動いていることがわかります。
続いて、以下のコマンドでISUCONのWebサービスを特定します。
systemctl --type=service | grep isu
これによりperlで動いている以下サービスを発見できます。
isuda.perl.service loaded active running isucon6 qualifier main application in perl
isutar.perl.service loaded active running isucon6 qualifier sub application in perl
以下コマンドでperlからPHPに変更します。
# isudaも同様にPHPに変更する必要あり
# Perl版を停止・無効化
sudo systemctl stop isutar.perl.service isuda.perl.service
sudo systemctl disable isutar.perl.service isuda.perl.service
# PHP版を起動・有効化
sudo systemctl start isutar.php.service isuda.php.service
sudo systemctl enable isutar.php.service isuda.php.service
最後にISUCON6では、PHPの場合、nginxの設定変更が必要とマニュアルに記載されているので、以下コマンドを打ちます。
sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.perl.back
sudo cp /etc/nginx/nginx.php.conf /etc/nginx/nginx.conf
# 変更した設定を反映する
sudo systemctl restart nginx
Remote-SSHが使えない
効率よくコードを読んだり修正したりするために、VSCodeの「Remote-SSH」を利用しようとしましたが、以下のエラーが発生しました。
ServerFailedToStart │ Error: ServerFailedToStart (VS Code Server を起動できませんでした)
代案として、拡張機能の「SFTP」を活用しました。sftp.json を作成して設定することで、VSCode上でコードを確認できます。
※私の環境ではVSCode上からの保存(同期)がうまくいかなかったため、閲覧はVSCode、修正はターミナルからVimで行うというスタイルで切り抜けました。
("uploadOnSave": trueにすると修正ができるという記事をみたのですが、うまくいかなかったです。)
.vscode/sftp.json の設定例
{
"name": "isucon6-server", // 任意の名前
"host": "xxx.xxx.xxx.xxx", // インスタンスのパブリックIP
"protocol": "sftp",
"port": 22,
"username": "ubuntu",
"remotePath": "/",
"privateKeyPath": "~/.ssh/id_rsa.pem" // 鍵のパス
}
pt-query-digestが使えない
スロークエリを解析するために pt-query-digest(percona-toolkit)を導入しようとしましたが、ここでも問題が発生しました。
通常通り sudo apt install percona-toolkit でインストールしたところ、解析がうまく動きません。バージョンを確認してみると 2.2.16 と、かなり古いものでした。 OSの標準リポジトリにあるパッケージが古いため、apt upgrade をしても最新版が降ってこない状態です。
そこで、Perconaの公式リポジトリを追加して最新版を直接インストールしました。
# 1. Perconaのリポジトリ設定パッケージをダウンロード
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# 2. 設定パッケージをインストール
sudo dpkg -i percona-release_latest.generic_all.deb
# 3. percona-toolkitのリポジトリを有効化
sudo percona-release enable-only tools release
# 4. パッケージリストを更新してインストール
sudo apt-get update
sudo apt-get install percona-toolkit
これにより、バージョンが 3.3.1 に上がり、無事にスロークエリ解析ができるようになりました。
まとめ
ISUCONで一番楽しいのは「ボトルネックを見つけてスコアを爆上げする瞬間」ですが、古い環境の過去問にチャレンジすると、その前段階の環境構築で思わぬ罠にハマることがあります。
もし昔のISUCON問題に挑戦して、チューニングに入る前に躓いている方がいれば、この記事が参考になれば幸いです!