SlideShare a Scribd company logo
1 of 42
中小規模サービスの
Apacheチューニング
株式会社スピカ
國府田勲
Copyright © Spika Inc. 2016 all rights reserved.
2
自己紹介
國府田勲
株式会社スピカ
代表取締役
インフラエンジニア
数百万人 数千万人 100万人
http://qiita.com/kou
Copyright © Spika Inc. 2016 all rights reserved.
1. はじめに
– 前提となるシステム構成
2. チューニングの進め方
– 監視の実施
– ボトルネックの調査
– チューニングの実施
3. チューニング事例
– 初期設定
– 個別設定
4. 質疑応答
3
アジェンダ
Copyright © Spika Inc. 2016 all rights reserved.
1. はじめに
4
Copyright © Spika Inc. 2016 all rights reserved.
• 前提となるシステム構成
–OS
• Linux
–Apache
• バージョン 2.2
• 動作モード prefork MPM
–構成
• WEBサーバ1-2台程度
• データベース1台
5
1. はじめに
WEBサーバ
DBサーバ
Copyright © Spika Inc. 2016 all rights reserved.
2. チューニングの進め方
6
Copyright © Spika Inc. 2016 all rights reserved.
7
2. チューニングの進め方
Plan
Do
Check
Action
Plan
監視しボトルネック箇所を特定する
Do
チューニングを実施する
Check
改善したか確認する
Action
改善していなければ再度実施
チューニングもPDCAが重要
Copyright © Spika Inc. 2016 all rights reserved.
• 監視の目的
– ベースラインの確立
– 性能劣化の検知
– ボトルネックの大まかな特定
– チューニング結果の確認
8
2. チューニングの進め方 / 監視の実施
定常的な監視を行う
Copyright © Spika Inc. 2016 all rights reserved.
• 監視項目
– ネットワークの利用状況
– システムの利用状況
– プロセスの利用状況
– アプリケーションの応答・処理時間
9
2. チューニングの進め方 / 監視の実施
Copyright © Spika Inc. 2016 all rights reserved.
• 死活監視とリソース監視の両方が統合されて
いる
• 保持されるデータ期間が比較的長いこと
• 日付・時間を指定して動的なグラフ作成がで
きること
10
2. チューニングの進め方 / 監視の実施
チューニングの観点からみた
監視ツール選択のポイント
Copyright © Spika Inc. 2016 all rights reserved.
DIY型
SaaS型
11
2. チューニングの進め方 / 監視の実施
Copyright © Spika Inc. 2016 all rights reserved.
12
2. チューニングの進め方 / 監視の実施
Copyright © Spika Inc. 2016 all rights reserved.
• 各種ログのチェック
– エラーや設定上限値に関する情報が出力されていないか
確認する
• モニタリングコマンドの実行
– vmstat
– free
– top など
13
2. チューニングの進め方 / ボトルネックの調査
監視ツールで大まかな傾向を把握し
詳細はサーバ上で確認する
Copyright © Spika Inc. 2016 all rights reserved.
14
2. チューニングの進め方 / ボトルネックの調査
vmstatのチェックポイント
[kouda@nb-app]~% vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0
0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0
0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0
0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0
2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0
1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0
1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0
procsチェックポイント
• rがCPUコア数以上
• 何らかの理由で処理待ちが発生している
• bが発生している
• ディスクやネットワークのI/O待ちがある
• ファイル書き込みや外部DBへの問い合わせ待ちがないか
確認
Copyright © Spika Inc. 2016 all rights reserved.
15
2. チューニングの進め方 / ボトルネックの調査
vmstatのチェックポイント
[kouda@nb-app]~% vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0
0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0
0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0
0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0
2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0
1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0
1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0
swapチェックポイント
• si/soで数値が出力されている
• swapが発生しているのでメモリ増設が必要
Copyright © Spika Inc. 2016 all rights reserved.
16
2. チューニングの進め方 / ボトルネックの調査
vmstatのチェックポイント
[kouda@nb-app]~% vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0
0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0
0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0
0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0
2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0
1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0
1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0
cpuチェックポイント
• us+syの数値が100近い
• CPUが性能限界
• waの数値が大きい
• ディスクやネットワークでのI/O待ちが発生している
Copyright © Spika Inc. 2016 all rights reserved.
17
2. チューニングの進め方 / ボトルネックの調査
freeのチェックポイント
bash-4.2# free -m
total used free shared buffers cached
Mem: 1997 1153 844 158 53 933
-/+ buffers/cache: 167 1830
Swap: 964 0 964
チェックポイント
• buffers/cacheのfreeが0に近い
• 利用できる残りのメモリ量が少ない
Copyright © Spika Inc. 2016 all rights reserved.
• mod_statusの確認
– Apacheに用意されているモニタリングモジュール
– Apacheのプロセスの稼働状況をモニタリングすることがで
きます
18
2. チューニングの進め方 / ボトルネックの調査
Copyright © Spika Inc. 2016 all rights reserved.
19
2. チューニングの進め方 / ボトルネックの調査
# mod_statusモジュールを有効にする
LoadModule status_module modules/mod_status.so
# 詳細情報出力オプション(デフォルトOff)
ExtendedStatus On
# ハンドラー設定
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .your.office
</Location>
mod_status有効化
Copyright © Spika Inc. 2016 all rights reserved.
20
2. チューニングの進め方 / ボトルネックの調査
Copyright © Spika Inc. 2016 all rights reserved.
21
2. チューニングの進め方 / ボトルネックの調査
チェックポイント
• Scoreboardがアルファベット埋め尽くされている
• 接続数に対して子プロセス数が足りていない
mod_statusのチェックポイント
Copyright © Spika Inc. 2016 all rights reserved.
22
2. チューニングの進め方 / チューニングの実施
Apacheチューニングとは効率を高めること
(+)
不足を補う
• CPU割当を増やす
• メモリ割り当てを増やす
(ー)
無駄を減らす
• 使っていないものを省く
• 重要度の低いことはやめ
る
効率を高める方法
Copyright © Spika Inc. 2016 all rights reserved.
• 実施時の注意点
– 同時に複数箇所を変更しない
• 効果の切り分けができないため
– 変更情報は記録しておく
• 後日、統計値と突き合わせて分析する際に必要
– ボトルネックの原因は複合的に発生する
• あるボトルネック箇所をクリアすると、他の部分がボト
ルネックとなる
23
2. チューニングの進め方 / チューニングの実施
Copyright © Spika Inc. 2016 all rights reserved.
24
2. チューニングの進め方 / チューニングの実施
ボトルネックA対策前
ボトルネックA
ボトルネックB
ボトルネックA対策後
ボトルネックBが
顕在化する
目標を達成するまで根気よくやり続ける
Copyright © Spika Inc. 2016 all rights reserved.
3. チューニング事例
25
Copyright © Spika Inc. 2016 all rights reserved.
26
3. チューニング事例
prefork MPMの概要
httpd親プロセス
httpd
子プロセス
httpd
子プロセス
httpd
子プロセス
httpd
子プロセス
親プロセスが子プロセスを管理
1子プロセス1接続を処理
Copyright © Spika Inc. 2016 all rights reserved.
Timeout
説明
• リクエストを受け取ってから処理完了までの待機時
間
• デフォルトは300秒
チューニング方針
• 時間を短くする
• 60秒以下がオススメ
27
3. チューニング事例 / 初期設定
Copyright © Spika Inc. 2016 all rights reserved.
KeepAlive
説明
• 1回のTCP接続で複数のHTTPリクエストを処理する
• デフォルトはOn
チューニング方針
• On/Offはサイト特性による
• OnにするときにもKeepAliveTimeoutや
MaxKeepAliveRequestsを設定する
• AWSのELB配下の場合はOnにする
28
3. チューニング事例 / 初期設定
Copyright © Spika Inc. 2016 all rights reserved.
HostnameLookups
説明
• ログファイルに記録する際に接続元IPアドレスを逆
引きする
• デフォルトはOff
チューニング方針
• Onにしない
• DNSの逆引きは時間がかかる
• どうしてもやりたい場合はlogresolveなどで後で行う
29
3. チューニング事例 / 初期設定
Copyright © Spika Inc. 2016 all rights reserved.
mod_deflate
説明
• HTTPで圧縮転送を行うモジュール
• 適用範囲を指定して利用する
チューニング方針
• テキストコンテンツに適用する
• 画像ファイルには適用しない
• 圧縮率はサーバのCPUリソースと相談して決める
30
3. チューニング事例 / 初期設定
Copyright © Spika Inc. 2016 all rights reserved.
31
3. チューニング事例 / 初期設定
# mod_deflateモジュールを有効にする
LoadModule deflate_module modules/mod_deflate.so
# 圧縮レベル(低圧縮1〜高圧縮9)
DeflateCompressionLevel 5
# 適用コンテンツを指定
AddOutputFilterByType DEFLATE text/html text/plain text/xml
mod_deflate有効化
Copyright © Spika Inc. 2016 all rights reserved.
不要モジュールの削除
説明
• Loadしないことで使用メモリが削減できる
チューニング方針
• 利用していないモジュールを削除する
• LoadModule行をコメントアウト
• ただし、自信がないときは削除しない
32
3. チューニング事例 / 初期設定
Copyright © Spika Inc. 2016 all rights reserved.
33
3. チューニング事例 / 初期設定
削除前
削除後
bash-4.2# ps axu | grep -e RSS -e httpd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9 0.0 0.3 121924 6148 ? Ss Nov21 0:02 /usr/sbin/httpd -k start
apache 181 0.0 0.2 121924 5188 ? S 02:14 0:00 /usr/sbin/httpd -k start
apache 182 0.0 0.2 121924 5148 ? S 02:14 0:00 /usr/sbin/httpd -k start
apache 183 0.0 0.2 121924 5376 ? S 02:14 0:00 /usr/sbin/httpd -k start
apache 184 0.0 0.2 121924 5248 ? S 02:14 0:00 /usr/sbin/httpd -k start
bash-4.2# ps axu | grep -e RSS -e httpd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9 0.0 0.3 176400 6856 ? Ss Nov21 0:02 /usr/sbin/httpd -k start
apache 10 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
apache 11 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
apache 12 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
apache 13 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
6.1MBから5.2MB程度まで削減
Copyright © Spika Inc. 2016 all rights reserved.
MaxClients/ServerLimit
説明
• サーバプロセスの上限数を設定する
• プロセス数≒最大同時接続数
チューニング方針
• topやpsコマンドなどで使用メモリ量を調査し、大ま
かに決定する
• CPU、メモリ使用量をみながら微調整する
34
3. チューニング事例 / 個別設定
Copyright © Spika Inc. 2016 all rights reserved.
MaxClients数の算出方法
• psコマンドでhttpdの1プロセスあたりのRSS(物
理メモリ使用量)を計測する
• 下記の数式を満たすようにMaxClients数を調
整する
35
3. チューニング事例 / 個別設定
サーバの物理メモリ量>httpd1プロセスあたり
のメモリ使用量×MaxClient数+他のプロセスが
利用するメモリ使用量
Copyright © Spika Inc. 2016 all rights reserved.
36
3. チューニング事例 / 個別設定
bash-4.2# ps axu | grep -e RSS -e httpd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9 0.0 0.3 176400 6856 ? Ss Nov21 0:02 /usr/sbin/httpd -k start
apache 10 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
apache 11 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
apache 12 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
apache 13 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start
RSSの数値を確認
KB単位
Copyright © Spika Inc. 2016 all rights reserved.
MinSpareServers/MaxSpareServers
説明
• 待機プロセス数を定義
• Min〜Maxの間となるようにプロセス数が維持される
チューニング方針
• WEB専用サーバであれば
MinSpareServers=MaxSpareServers=MaxClientで良
い
37
3. チューニング事例 / 個別設定
Copyright © Spika Inc. 2016 all rights reserved.
MaxRequestsPerChild
説明
• 子プロセスが処理するリクエスト数
• この数値を超えると子プロセスが終了する
• デフォルト:10000
• 0にすると無制限となる
チューニング方針
• 子プロセスがメモリ肥大化しない場合は0
• 制限値を設定しておくと安心
38
3. チューニング事例 / 個別設定
Copyright © Spika Inc. 2016 all rights reserved.
worker MPMに切り替える
説明
• 各子プロセスがマルチスレッドで処理するため消費
メモリが少なくなる
チューニング方針
• サードパーティーモジュールがスレッドセーフであれ
ば採用
39
3. チューニング事例 / 個別設定
Copyright © Spika Inc. 2016 all rights reserved.
40
3. チューニング事例 / 個別設定
worker MPMの概要
httpd親プロセス
httpd
子プロセス
httpd
子プロセス
httpd
子プロセス
httpd
子プロセス
1子プロセスが複数接続を処理
Copyright © Spika Inc. 2016 all rights reserved.
Apacheチューニングは万能ではありません
• スケールアップ
• スケールアウト
• アプリケーション側のチューニング
などの手段を検討しましょう
41
最後に
どうしても目標が満たせない場合
Copyright © Spika Inc. 2016 all rights reserved.
42
エンジニア募集中
エンジニア募集中!
あらゆるジャンルで募集してます
詳細はWantedlyで
https://www.wantedly.com/companies/spika/info

More Related Content

What's hot

20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...Amazon Web Services Japan
 
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本Amazon Web Services Japan
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門Yoichi Kawasaki
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
ロードバランスへの長い道
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道Jun Kato
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)NTT DATA Technology & Innovation
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)Amazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon CognitoAmazon Web Services Japan
 
VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話Noritaka Sekiyama
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...Amazon Web Services Japan
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAmazon Web Services Japan
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)J-Stream Inc.
 

What's hot (20)

20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
 
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ロードバランスへの長い道
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
 
AWSではじめるDNSSEC
AWSではじめるDNSSECAWSではじめるDNSSEC
AWSではじめるDNSSEC
 
VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct Connect
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
 

Similar to 中小規模サービスのApacheチューニング

泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証BrainPad Inc.
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料dcubeio
 
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価Dell TechCenter Japan
 
自宅サーバーを立てる話
自宅サーバーを立てる話自宅サーバーを立てる話
自宅サーバーを立てる話naba0123
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet ServicesNaoto Gohko
 
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようTadashi Yamashita
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までSatoyuki Tsukano
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料Yasutaka Hamada
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門Yuki Suga
 
システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5shingo suzuki
 
Soft layer network概要_jslug向け
Soft layer network概要_jslug向けSoft layer network概要_jslug向け
Soft layer network概要_jslug向けHideaki Tokida
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月VirtualTech Japan Inc.
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなしMasahiro NAKAYAMA
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションTakashi Kanai
 
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)Insight Technology, Inc.
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Yukio Kumazawa
 

Similar to 中小規模サービスのApacheチューニング (20)

泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料
 
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価SAS Visual Analytics 6.3 を使った DELL VRTX の評価
SAS Visual Analytics 6.3 を使った DELL VRTX の評価
 
自宅サーバーを立てる話
自宅サーバーを立てる話自宅サーバーを立てる話
自宅サーバーを立てる話
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
 
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
 
ネットワーク通信入門
ネットワーク通信入門ネットワーク通信入門
ネットワーク通信入門
 
システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5
 
Soft layer network概要_jslug向け
Soft layer network概要_jslug向けSoft layer network概要_jslug向け
Soft layer network概要_jslug向け
 
Riakを利用したパーソナライズ事例
Riakを利用したパーソナライズ事例Riakを利用したパーソナライズ事例
Riakを利用したパーソナライズ事例
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
 
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
 
Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用Share pointを支えるsql server2014最新情報 tokyo_公開用
Share pointを支えるsql server2014最新情報 tokyo_公開用
 

More from 勲 國府田

ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜
ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜
ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜勲 國府田
 
逆説のネイルブックSEO 〜完全リニューアルマニュアル〜
逆説のネイルブックSEO 〜完全リニューアルマニュアル〜逆説のネイルブックSEO 〜完全リニューアルマニュアル〜
逆説のネイルブックSEO 〜完全リニューアルマニュアル〜勲 國府田
 
ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜
ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜
ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜勲 國府田
 
ネイルブックでのWEB高速化の取り組み
ネイルブックでのWEB高速化の取り組みネイルブックでのWEB高速化の取り組み
ネイルブックでのWEB高速化の取り組み勲 國府田
 
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜勲 國府田
 
Tech valley #5 株式会社スピカご紹介
Tech valley #5 株式会社スピカご紹介Tech valley #5 株式会社スピカご紹介
Tech valley #5 株式会社スピカご紹介勲 國府田
 
ネイルブックでのGoogle Play ASOについて
ネイルブックでのGoogle Play ASOについてネイルブックでのGoogle Play ASOについて
ネイルブックでのGoogle Play ASOについて勲 國府田
 
SSDとTokyoTyrantやMySQLの性能検証
SSDとTokyoTyrantやMySQLの性能検証SSDとTokyoTyrantやMySQLの性能検証
SSDとTokyoTyrantやMySQLの性能検証勲 國府田
 

More from 勲 國府田 (8)

ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜
ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜
ネイルブックのSNS集客術〜Pinterest・SNS活用事例〜
 
逆説のネイルブックSEO 〜完全リニューアルマニュアル〜
逆説のネイルブックSEO 〜完全リニューアルマニュアル〜逆説のネイルブックSEO 〜完全リニューアルマニュアル〜
逆説のネイルブックSEO 〜完全リニューアルマニュアル〜
 
ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜
ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜
ユーザテストが教えてくれた女ゴコロ〜女性向けサービスの育て方〜
 
ネイルブックでのWEB高速化の取り組み
ネイルブックでのWEB高速化の取り組みネイルブックでのWEB高速化の取り組み
ネイルブックでのWEB高速化の取り組み
 
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
 
Tech valley #5 株式会社スピカご紹介
Tech valley #5 株式会社スピカご紹介Tech valley #5 株式会社スピカご紹介
Tech valley #5 株式会社スピカご紹介
 
ネイルブックでのGoogle Play ASOについて
ネイルブックでのGoogle Play ASOについてネイルブックでのGoogle Play ASOについて
ネイルブックでのGoogle Play ASOについて
 
SSDとTokyoTyrantやMySQLの性能検証
SSDとTokyoTyrantやMySQLの性能検証SSDとTokyoTyrantやMySQLの性能検証
SSDとTokyoTyrantやMySQLの性能検証
 

中小規模サービスのApacheチューニング

  • 2. Copyright © Spika Inc. 2016 all rights reserved. 2 自己紹介 國府田勲 株式会社スピカ 代表取締役 インフラエンジニア 数百万人 数千万人 100万人 http://qiita.com/kou
  • 3. Copyright © Spika Inc. 2016 all rights reserved. 1. はじめに – 前提となるシステム構成 2. チューニングの進め方 – 監視の実施 – ボトルネックの調査 – チューニングの実施 3. チューニング事例 – 初期設定 – 個別設定 4. 質疑応答 3 アジェンダ
  • 4. Copyright © Spika Inc. 2016 all rights reserved. 1. はじめに 4
  • 5. Copyright © Spika Inc. 2016 all rights reserved. • 前提となるシステム構成 –OS • Linux –Apache • バージョン 2.2 • 動作モード prefork MPM –構成 • WEBサーバ1-2台程度 • データベース1台 5 1. はじめに WEBサーバ DBサーバ
  • 6. Copyright © Spika Inc. 2016 all rights reserved. 2. チューニングの進め方 6
  • 7. Copyright © Spika Inc. 2016 all rights reserved. 7 2. チューニングの進め方 Plan Do Check Action Plan 監視しボトルネック箇所を特定する Do チューニングを実施する Check 改善したか確認する Action 改善していなければ再度実施 チューニングもPDCAが重要
  • 8. Copyright © Spika Inc. 2016 all rights reserved. • 監視の目的 – ベースラインの確立 – 性能劣化の検知 – ボトルネックの大まかな特定 – チューニング結果の確認 8 2. チューニングの進め方 / 監視の実施 定常的な監視を行う
  • 9. Copyright © Spika Inc. 2016 all rights reserved. • 監視項目 – ネットワークの利用状況 – システムの利用状況 – プロセスの利用状況 – アプリケーションの応答・処理時間 9 2. チューニングの進め方 / 監視の実施
  • 10. Copyright © Spika Inc. 2016 all rights reserved. • 死活監視とリソース監視の両方が統合されて いる • 保持されるデータ期間が比較的長いこと • 日付・時間を指定して動的なグラフ作成がで きること 10 2. チューニングの進め方 / 監視の実施 チューニングの観点からみた 監視ツール選択のポイント
  • 11. Copyright © Spika Inc. 2016 all rights reserved. DIY型 SaaS型 11 2. チューニングの進め方 / 監視の実施
  • 12. Copyright © Spika Inc. 2016 all rights reserved. 12 2. チューニングの進め方 / 監視の実施
  • 13. Copyright © Spika Inc. 2016 all rights reserved. • 各種ログのチェック – エラーや設定上限値に関する情報が出力されていないか 確認する • モニタリングコマンドの実行 – vmstat – free – top など 13 2. チューニングの進め方 / ボトルネックの調査 監視ツールで大まかな傾向を把握し 詳細はサーバ上で確認する
  • 14. Copyright © Spika Inc. 2016 all rights reserved. 14 2. チューニングの進め方 / ボトルネックの調査 vmstatのチェックポイント [kouda@nb-app]~% vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0 0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0 0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0 0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0 2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0 1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0 1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0 procsチェックポイント • rがCPUコア数以上 • 何らかの理由で処理待ちが発生している • bが発生している • ディスクやネットワークのI/O待ちがある • ファイル書き込みや外部DBへの問い合わせ待ちがないか 確認
  • 15. Copyright © Spika Inc. 2016 all rights reserved. 15 2. チューニングの進め方 / ボトルネックの調査 vmstatのチェックポイント [kouda@nb-app]~% vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0 0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0 0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0 0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0 2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0 1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0 1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0 swapチェックポイント • si/soで数値が出力されている • swapが発生しているのでメモリ増設が必要
  • 16. Copyright © Spika Inc. 2016 all rights reserved. 16 2. チューニングの進め方 / ボトルネックの調査 vmstatのチェックポイント [kouda@nb-app]~% vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 9445900 284288 2531212 0 0 0 8 8 4 26 1 73 0 0 0 0 0 9445768 284288 2531220 0 0 0 0 1841 981 15 1 84 0 0 0 0 0 9445960 284288 2531228 0 0 0 92 2181 1197 29 1 71 0 0 0 0 0 9445532 284288 2531232 0 0 0 0 2020 979 24 0 76 0 0 2 0 0 9445672 284288 2531240 0 0 0 0 2365 1285 32 1 66 0 0 1 0 0 9445784 284288 2531244 0 0 0 0 852 469 8 0 92 0 0 1 0 0 9446068 284288 2531248 0 0 0 4 1424 798 11 1 88 0 0 cpuチェックポイント • us+syの数値が100近い • CPUが性能限界 • waの数値が大きい • ディスクやネットワークでのI/O待ちが発生している
  • 17. Copyright © Spika Inc. 2016 all rights reserved. 17 2. チューニングの進め方 / ボトルネックの調査 freeのチェックポイント bash-4.2# free -m total used free shared buffers cached Mem: 1997 1153 844 158 53 933 -/+ buffers/cache: 167 1830 Swap: 964 0 964 チェックポイント • buffers/cacheのfreeが0に近い • 利用できる残りのメモリ量が少ない
  • 18. Copyright © Spika Inc. 2016 all rights reserved. • mod_statusの確認 – Apacheに用意されているモニタリングモジュール – Apacheのプロセスの稼働状況をモニタリングすることがで きます 18 2. チューニングの進め方 / ボトルネックの調査
  • 19. Copyright © Spika Inc. 2016 all rights reserved. 19 2. チューニングの進め方 / ボトルネックの調査 # mod_statusモジュールを有効にする LoadModule status_module modules/mod_status.so # 詳細情報出力オプション(デフォルトOff) ExtendedStatus On # ハンドラー設定 <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from .your.office </Location> mod_status有効化
  • 20. Copyright © Spika Inc. 2016 all rights reserved. 20 2. チューニングの進め方 / ボトルネックの調査
  • 21. Copyright © Spika Inc. 2016 all rights reserved. 21 2. チューニングの進め方 / ボトルネックの調査 チェックポイント • Scoreboardがアルファベット埋め尽くされている • 接続数に対して子プロセス数が足りていない mod_statusのチェックポイント
  • 22. Copyright © Spika Inc. 2016 all rights reserved. 22 2. チューニングの進め方 / チューニングの実施 Apacheチューニングとは効率を高めること (+) 不足を補う • CPU割当を増やす • メモリ割り当てを増やす (ー) 無駄を減らす • 使っていないものを省く • 重要度の低いことはやめ る 効率を高める方法
  • 23. Copyright © Spika Inc. 2016 all rights reserved. • 実施時の注意点 – 同時に複数箇所を変更しない • 効果の切り分けができないため – 変更情報は記録しておく • 後日、統計値と突き合わせて分析する際に必要 – ボトルネックの原因は複合的に発生する • あるボトルネック箇所をクリアすると、他の部分がボト ルネックとなる 23 2. チューニングの進め方 / チューニングの実施
  • 24. Copyright © Spika Inc. 2016 all rights reserved. 24 2. チューニングの進め方 / チューニングの実施 ボトルネックA対策前 ボトルネックA ボトルネックB ボトルネックA対策後 ボトルネックBが 顕在化する 目標を達成するまで根気よくやり続ける
  • 25. Copyright © Spika Inc. 2016 all rights reserved. 3. チューニング事例 25
  • 26. Copyright © Spika Inc. 2016 all rights reserved. 26 3. チューニング事例 prefork MPMの概要 httpd親プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス 親プロセスが子プロセスを管理 1子プロセス1接続を処理
  • 27. Copyright © Spika Inc. 2016 all rights reserved. Timeout 説明 • リクエストを受け取ってから処理完了までの待機時 間 • デフォルトは300秒 チューニング方針 • 時間を短くする • 60秒以下がオススメ 27 3. チューニング事例 / 初期設定
  • 28. Copyright © Spika Inc. 2016 all rights reserved. KeepAlive 説明 • 1回のTCP接続で複数のHTTPリクエストを処理する • デフォルトはOn チューニング方針 • On/Offはサイト特性による • OnにするときにもKeepAliveTimeoutや MaxKeepAliveRequestsを設定する • AWSのELB配下の場合はOnにする 28 3. チューニング事例 / 初期設定
  • 29. Copyright © Spika Inc. 2016 all rights reserved. HostnameLookups 説明 • ログファイルに記録する際に接続元IPアドレスを逆 引きする • デフォルトはOff チューニング方針 • Onにしない • DNSの逆引きは時間がかかる • どうしてもやりたい場合はlogresolveなどで後で行う 29 3. チューニング事例 / 初期設定
  • 30. Copyright © Spika Inc. 2016 all rights reserved. mod_deflate 説明 • HTTPで圧縮転送を行うモジュール • 適用範囲を指定して利用する チューニング方針 • テキストコンテンツに適用する • 画像ファイルには適用しない • 圧縮率はサーバのCPUリソースと相談して決める 30 3. チューニング事例 / 初期設定
  • 31. Copyright © Spika Inc. 2016 all rights reserved. 31 3. チューニング事例 / 初期設定 # mod_deflateモジュールを有効にする LoadModule deflate_module modules/mod_deflate.so # 圧縮レベル(低圧縮1〜高圧縮9) DeflateCompressionLevel 5 # 適用コンテンツを指定 AddOutputFilterByType DEFLATE text/html text/plain text/xml mod_deflate有効化
  • 32. Copyright © Spika Inc. 2016 all rights reserved. 不要モジュールの削除 説明 • Loadしないことで使用メモリが削減できる チューニング方針 • 利用していないモジュールを削除する • LoadModule行をコメントアウト • ただし、自信がないときは削除しない 32 3. チューニング事例 / 初期設定
  • 33. Copyright © Spika Inc. 2016 all rights reserved. 33 3. チューニング事例 / 初期設定 削除前 削除後 bash-4.2# ps axu | grep -e RSS -e httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.3 121924 6148 ? Ss Nov21 0:02 /usr/sbin/httpd -k start apache 181 0.0 0.2 121924 5188 ? S 02:14 0:00 /usr/sbin/httpd -k start apache 182 0.0 0.2 121924 5148 ? S 02:14 0:00 /usr/sbin/httpd -k start apache 183 0.0 0.2 121924 5376 ? S 02:14 0:00 /usr/sbin/httpd -k start apache 184 0.0 0.2 121924 5248 ? S 02:14 0:00 /usr/sbin/httpd -k start bash-4.2# ps axu | grep -e RSS -e httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.3 176400 6856 ? Ss Nov21 0:02 /usr/sbin/httpd -k start apache 10 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 11 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 12 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 13 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start 6.1MBから5.2MB程度まで削減
  • 34. Copyright © Spika Inc. 2016 all rights reserved. MaxClients/ServerLimit 説明 • サーバプロセスの上限数を設定する • プロセス数≒最大同時接続数 チューニング方針 • topやpsコマンドなどで使用メモリ量を調査し、大ま かに決定する • CPU、メモリ使用量をみながら微調整する 34 3. チューニング事例 / 個別設定
  • 35. Copyright © Spika Inc. 2016 all rights reserved. MaxClients数の算出方法 • psコマンドでhttpdの1プロセスあたりのRSS(物 理メモリ使用量)を計測する • 下記の数式を満たすようにMaxClients数を調 整する 35 3. チューニング事例 / 個別設定 サーバの物理メモリ量>httpd1プロセスあたり のメモリ使用量×MaxClient数+他のプロセスが 利用するメモリ使用量
  • 36. Copyright © Spika Inc. 2016 all rights reserved. 36 3. チューニング事例 / 個別設定 bash-4.2# ps axu | grep -e RSS -e httpd USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.3 176400 6856 ? Ss Nov21 0:02 /usr/sbin/httpd -k start apache 10 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 11 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 12 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start apache 13 0.0 0.2 176536 6088 ? S Nov21 0:00 /usr/sbin/httpd -k start RSSの数値を確認 KB単位
  • 37. Copyright © Spika Inc. 2016 all rights reserved. MinSpareServers/MaxSpareServers 説明 • 待機プロセス数を定義 • Min〜Maxの間となるようにプロセス数が維持される チューニング方針 • WEB専用サーバであれば MinSpareServers=MaxSpareServers=MaxClientで良 い 37 3. チューニング事例 / 個別設定
  • 38. Copyright © Spika Inc. 2016 all rights reserved. MaxRequestsPerChild 説明 • 子プロセスが処理するリクエスト数 • この数値を超えると子プロセスが終了する • デフォルト:10000 • 0にすると無制限となる チューニング方針 • 子プロセスがメモリ肥大化しない場合は0 • 制限値を設定しておくと安心 38 3. チューニング事例 / 個別設定
  • 39. Copyright © Spika Inc. 2016 all rights reserved. worker MPMに切り替える 説明 • 各子プロセスがマルチスレッドで処理するため消費 メモリが少なくなる チューニング方針 • サードパーティーモジュールがスレッドセーフであれ ば採用 39 3. チューニング事例 / 個別設定
  • 40. Copyright © Spika Inc. 2016 all rights reserved. 40 3. チューニング事例 / 個別設定 worker MPMの概要 httpd親プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス httpd 子プロセス 1子プロセスが複数接続を処理
  • 41. Copyright © Spika Inc. 2016 all rights reserved. Apacheチューニングは万能ではありません • スケールアップ • スケールアウト • アプリケーション側のチューニング などの手段を検討しましょう 41 最後に どうしても目標が満たせない場合
  • 42. Copyright © Spika Inc. 2016 all rights reserved. 42 エンジニア募集中 エンジニア募集中! あらゆるジャンルで募集してます 詳細はWantedlyで https://www.wantedly.com/companies/spika/info