SlideShare a Scribd company logo
1 of 22
Download to read offline
はじめようISUCON!
1
whoami
slack, hubot, Raspberry Pi
   Google Home, AWS
Name : endo (@do1nce)
proxy, sales
2
話すこと
ISUCONとは?
問題紹介
傾向と対策
まとめ
3
ISUCONとは?
3人チームでWebAPチューニングの腕前を競う大会
主催:LINE
参加無料、優勝賞金100万円
開催場所
- 予選:オンライン  本選: LINEオフィス(新宿)
4
競技内容
あたえられたWebAPスループットを向上させる
- 実装言語は各チームが選べる
- Perl, Ruby, Python, PHP, Node.js, Go
レギュレーション
- ミドルの入れ替え、設定変更、コード変更などは一切禁止しない
- 複数台あるサーバーの役割の変更
- DBスキーマの変更やインデックスの作成・削除
- キャッシュ機構の追加、ジョブキュー機構の追加等
最後に採点したベンチマークのスコアを競う
5
ISUCON8予選 問題紹介
6
出題アプリ:
イベントチケット予約サイト
7
8
VMスペック
vCPU 2コア : Xeon(R)@ 2.40GHz
メモリ 1GB
ネットワーク帯域 1Gbps
ディスク SSD
✕3台
※自由に使っていい
9
OS/ミドルウェア
CentOS 7.5.1804
MariaDB 5.5.60   ←
H2O 2.2.5     ←
10
とりあえずベンチマーク
初期スコア: 500点くらい
11
リポジトリ作成
やるべき。(来年こそは・・)
無料でPrivateリポジトリ作れるGitLab良さそう
12
プロファイリング
ボトルネックを探そうとした
→準備していたalpというプロファイリングツールが使えない!
→諦めて次の手段へ
13
リソース監視
netdata
14
ミドルチューニング
CPUが50%付近で停滞していたのでワーカースレッドを2倍に
→スコア900点くらい
メモリもかなり余っていたのでクエリーキャッシュに割り当てた
→スコア4000点くらい
15
アプリチューニング
スロークエリログから探る
get_event地獄 (公式解説より引用)
get_event の実装はイベントIDに対して全席ぶんのステータスを含めてイベントのすべて
の状態を返す実装になっていました。
すべてのシート(1000個)に対して都度クエリを発行する N+1問題になっているなど、かな
り非効率的な処理をしています。
※なんもわからん(チームメイトにやってもらった)
16
こういうことをどんどんやって高速化していく・・
(8時間)
17
結果
0点!
終了30分前にベンチマークがコケるようになってしまい、
バグが取り切れず・・・
構成管理しておけばよかった(戒め)
18
何をすべきだったか
● h2o → nginxへ載せかえ
● AP/DBのサーバ分離
○ ノード間通信にunixドメインソケットを使う
● 静的ファイルはnginxで返す
● DBにインデックス追加
場当たり的にチューニングしても効果なし
→プロファイリング粘るべきだった・・・
19
試験対策
ConohaさんがISUCON予選VMイメージを提供してくれました!
https://www.conoha.jp/guide/isucon8-qualify.php
20
まとめ
ISUCONはインフラエンジニアだけのものではない
環境構築がカンタン & 解説がたくさんある ので勉強しやすい
(と思って油断しているとh2oが急に飛び出してくる)
同僚、友達と気軽にチャレンジ!
21
Thank you for listening!
22

More Related Content

What's hot

ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~Ryuta Otaki
 
Amazon Provisioned IOPS for RDS
Amazon Provisioned IOPS for RDSAmazon Provisioned IOPS for RDS
Amazon Provisioned IOPS for RDSManabu Shinsaka
 
Pyvmomiとansibleのdynamic inventory
Pyvmomiとansibleのdynamic inventoryPyvmomiとansibleのdynamic inventory
Pyvmomiとansibleのdynamic inventoryKentaro Kawano
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集Couchbase Japan KK
 
AWS Auroraよもやま話
AWS Auroraよもやま話AWS Auroraよもやま話
AWS Auroraよもやま話Akira Miki
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入matsumoto_katsuhiko
 
第3回岡山PHP勉強会
第3回岡山PHP勉強会第3回岡山PHP勉強会
第3回岡山PHP勉強会Masaki Takeda
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごとYugo Shimizu
 
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲームhideyuki ikeda
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料Takahiro Iwase
 
Amazon Kinesis developersio-meetup-05
Amazon Kinesis developersio-meetup-05Amazon Kinesis developersio-meetup-05
Amazon Kinesis developersio-meetup-05Ryo Suzuki
 
JAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
JAWS-UG Santo 2014-07-05 Drupal on PaaS CloudJAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
JAWS-UG Santo 2014-07-05 Drupal on PaaS CloudANNAI_LLC
 
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化JubatusOfficial
 
Rubyによるお手軽分散処理
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理maebashi
 
VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料Shinichiro Isago
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策Salesforce Developers Japan
 

What's hot (20)

ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
 
Rds徹底入門
Rds徹底入門Rds徹底入門
Rds徹底入門
 
Amazon Provisioned IOPS for RDS
Amazon Provisioned IOPS for RDSAmazon Provisioned IOPS for RDS
Amazon Provisioned IOPS for RDS
 
Pyvmomiとansibleのdynamic inventory
Pyvmomiとansibleのdynamic inventoryPyvmomiとansibleのdynamic inventory
Pyvmomiとansibleのdynamic inventory
 
「Windows Azureで HPC 」 for JAZUG 2013年9月
「Windows Azureで HPC 」 for JAZUG 2013年9月「Windows Azureで HPC 」 for JAZUG 2013年9月
「Windows Azureで HPC 」 for JAZUG 2013年9月
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
 
AWS Auroraよもやま話
AWS Auroraよもやま話AWS Auroraよもやま話
AWS Auroraよもやま話
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
 
Couchbaseの紹介 2015/03/05
Couchbaseの紹介 2015/03/05Couchbaseの紹介 2015/03/05
Couchbaseの紹介 2015/03/05
 
第3回岡山PHP勉強会
第3回岡山PHP勉強会第3回岡山PHP勉強会
第3回岡山PHP勉強会
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料
 
Amazon Kinesis developersio-meetup-05
Amazon Kinesis developersio-meetup-05Amazon Kinesis developersio-meetup-05
Amazon Kinesis developersio-meetup-05
 
Aurora
AuroraAurora
Aurora
 
JAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
JAWS-UG Santo 2014-07-05 Drupal on PaaS CloudJAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
JAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
 
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
 
Rubyによるお手軽分散処理
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理
 
VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料VisualStudio2010ReadyDay Azureセッション資料
VisualStudio2010ReadyDay Azureセッション資料
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 

Similar to Let's start ISUCON

「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料Hidetoshi Hirokawa
 
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)Insight Technology, Inc.
 
OSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGOSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGHideki Saito
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンKazuyuki Miyake
 
Ivsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recapIvsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recapTadashi Okazaki
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016 EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016 Yasuhiro Matsuo
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #EShuji Watanabe
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデートKazumasa Ikuta
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイントKentaro Matsui
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 

Similar to Let's start ISUCON (20)

PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
 
Case study puppet
Case study puppetCase study puppet
Case study puppet
 
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
 
OSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUGOSC2012 Tokyo/Spring JOSUG
OSC2012 Tokyo/Spring JOSUG
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
Ivsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recapIvsctonightandday2016winter moringsession awsreinvent2016recap
Ivsctonightandday2016winter moringsession awsreinvent2016recap
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016 EC2 Deep Dive at CTO Night&Day 2016
EC2 Deep Dive at CTO Night&Day 2016
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
OSv噺
OSv噺OSv噺
OSv噺
 
Ohs#7 学習API
Ohs#7 学習APIOhs#7 学習API
Ohs#7 学習API
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート
 
IOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデートIOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデート
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
Apache Hadoopを改めて知る
Apache Hadoopを改めて知るApache Hadoopを改めて知る
Apache Hadoopを改めて知る
 

Let's start ISUCON