しばらくサーバ環境を放置していたのですがアナリティクスでサイト速度を見ると、とんでもなく悪化していました。
Nginx.conf
worker_processes 4;
+ worker_cpu_affinity 1000 0100 0010 0001;
- worker_connections 2048;
+ worker_connections 10240;
- worker_rlimit_nofile 4096;
+ worker_rlimit_nofile 20480;
以前このようにしていたのですが、Linuxのリソース制限をすっかり忘れていました。
ulimit -aで確認すると1024のままでした。下記で変更。ただし再起動時に初期化されてしまうのであまり意味はありません。
ssh
ulimit -n 20480
/etc/my.cnf.d/server.cnf
[mysqld]
# 恒例のUTF8
character-set-server = utf8
collation-server = utf8_general_ci
# 重要 高速化プラグイン、この一行いれるだけで効果絶大
plugin-load = handlersocket.so;semisync_master.so;semisync_slave.so
bind-address=127.0.0.1
skip-name-resolve
# 低い 初期設定でも可。メモリに余裕があれば256MBで十分
key_buffer_size = 512M
# 低い 入力データ保持のための最大バッファサイズ。大きなファイルを入出力する際に必須
max_allowed_packet = 1M
# 普通 テーブルを開く際に仕様するキャッシュ、I/Oタイムを減らすのに有効。
table_open_cache = 512
# 低い ORDER BYやGROUP BYのクエリ速度
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
# 重要 InnoDBのバッファプール、OSキャッシュに強く依存、使用可能メモリの80%
innodb_buffer_pool_size = 1024M
# 普通 正式なログファイルの最適化があるが極めて面倒
innodb_log_file_size = 128M
# 普通 低いほうが良い
innodb_log_buffer_size = 4M
innodb_flush_log_at_trx_commit = 1
innodb_support_xa=1
innodb_log_files_in_group = 7
innodb_autoextend_increment=64
# テーブルごとにテーブルスペースが作成される
innodb_file_per_table
重要なのはinnodb_buffer_pool_sizeでどの解説サイトにも公式にも書いてありますが使用可能メモリの80%を指定すること。『使用可能』のですのでコンピュータスペックそのものの80%ではありません。初期設定では2GBほどにしていましたが重かったため1GBにすると結構早くなります。
後日すぐに結果が現れました。
同時接続人数70、総勢300人以上の人たちが何時間、いや何日間も掛けてオンラインゲーム『マインクラフト』で協力して何か作っている動画。再生時間6分から最下層までいき水や溶岩を巻いて遊んだりしている姿が楽しそうです。それにしても70人もリアルタイムで繋がれるのは良いですね。
私の部屋が観葉植物だらけなキッカケとなったこちらの完成予定画像。新拠点とされていたが、Campusということは学校である、円の部分が校舎でまた周りにいくつかあるのが会社。ここから豊田市のようにAppleCityになったりして拡大していくのであろう。なにせ学びの園となるので、Appleの未来は明るいですね。小さな端末iPodから始まってここまで大きくなるとは。私もこのような物を築きたいですが年齢と知能的にもう遅いです。
日付 | 2016-02-06T07:57:31 |
分類 | WEBマスター |
画像 | 140枚 |
訪問数 |