More Related Content
Similar to I/Oを極めろ! for PHPer - NewRelicを利用したパフォーマンス改善 -
Similar to I/Oを極めろ! for PHPer - NewRelicを利用したパフォーマンス改善 - (20)
I/Oを極めろ! for PHPer - NewRelicを利用したパフォーマンス改善 -
- 2. -自己紹介 -
ChatWork株式会社
藤原 吉規 技術部
サーバーエンジニア
ビジネスチャットツール「チャットワーク」を展開中
東京:18人
大阪:15人USA:6人
ルクセンブルクに子会社を設立
- 13. Amazon S3
の問題
• チャットワークのファイル共有機能で利用
• Webサーバー経由のUpload/Downloadによるパ
フォーマンス低下
- 14. Amazon S3
の解決策
• Pre-Signed URLを利用したUpload/Downloadに変
更
• http://qiita.com/inokappa/items/
dc3ef8b564c7d1f63be2
- 15. Amazon EC2
の問題
• Elastic Block StorageのIO能力不足
• syslog
• php.ini、upload_tmp_dir(/tmp)
• TMPDIR(/tmp)
• putenv(‘TMPDIR=/tmp')
- 18. memcached(ElastiCache)
の解決策
• php-memcachedの持続的接続を利用
• ini_set('session.save_path','PERSISTENT=1
localhost:11211');
• http://qiita.com/shin1x1/items/
092588ac9b4f610b40d6
- 20. MySQL(RDS)の解決策
• 接続タイムアウトの適切な指定
• $mysqli-
>options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)
• innodb_lock_wait_timeoutの指定
• $mysqli->query("SET
innodb_lock_wait_timeout=5")
- 21. MySQL(RDS)の解決策
• 持続的接続の利用
• $mysqli->real_connect('p:localhost', 'my_user',
'my_password', 'my_db')
• AutoCommit OFF
• $mysqli->autocommit(FALSE);
- 24. Amazon SQS,DynamoDB
の解決策
• カーネルパラメータ変更
• http://understeer.hatenablog.com/entry/
2014/02/25/173810
!
/etc/sysctl.conf
net.core.somaxconn = 10240
net.core.netdev_max_backlog = 10240
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_fin_timeout = 10
- 25. Amazon SQS,DynamoDB
の解決策
• AWS SDK for PHP Performance Guide
• http://docs.aws.amazon.com/aws-sdk-php/
guide/latest/performance.html
• Class Preloader for PHP
• https://github.com/mtdowling/ClassPreloader