-
Notifications
You must be signed in to change notification settings - Fork 0
スコア記録 #1
Comments
Go 実装初期スコア: 0
|
アクセスログ・クエリログを出す: 0access.log
slow.log
|
適当に index はる: 23014
ALTER TABLE `users` ADD INDEX (`authority`);
ALTER TABLE `users` ADD INDEX (`account_name`);
ALTER TABLE `posts` ADD INDEX (`created_at`);
ALTER TABLE `posts` ADD INDEX (`user_id`);
ALTER TABLE `comments` ADD INDEX (`user_id`);
ALTER TABLE `comments` ADD INDEX (`post_id`); access.log
slow.log
|
#3 画像をファイルに書き出し: 28329
access.log
slow.log
|
#4: posts を全件 SELECT するのをやめる: 41121CPU usage は app : mysql = 1 : 4 くらい
access.log
slow.log
|
#2
|
#5 posts 取得で created_at DESC の index を強制: 71693Go が CPU を7~8割ほど使うようになった
access.log
slow.log
|
#6 静的ファイルを Nginx から配信: 102835
access.log
slow.log
|
#7 外部コマンド呼び出しをやめる: 114241CPU 使い切れなくなった
access.log
slow.log
|
#8 クエリの typo を修正: 136134fail になってなかったのか…
access.log
slow.log
|
#11 cache-control: 221409恒例行事
access.log
slow.log
|
#13 コメント件数を posts table にキャッシュ: 231517スコアは微増だが、負荷は Go にちょっと寄った
access.log
slow.log
|
#14 コメントごとに現在最新n件目なのかを事前計算: 243319スコア微増だが、構造をシンプルにすることを優先。
access.log
slow.log
|
#15
|
#16
|
|
app と bench が別 AZ で動いてたのを修正: 559844{"pass":true,"score":559844,"success":545359,"fail":0,"messages":[]} CPU を全部使い切るようになった access.log
slow.log
|
#17
|
#18
|
#19
|
#21
|
#23 Nginx の
|
ストレージが枯れたので増やした: 763124IOPS 増えたりするけど、本質じゃないところに時間は使いたくないので気にしない。
{"pass":true,"score":763124,"success":741302,"fail":0,"messages":[]} access.log
slow.log
|
#24 ユーザページの投稿数と被コメント数を1回のクエリで取得: 771337スコアはあんまり変わらず…
access.log
slow.log
|
MySQL の binlog 切ったり doublewrite とめたり: 791748my.cnf
{"pass":true,"score":791748,"success":767773,"fail":0,"messages":[]} access.log
slow.log
|
#27 post_htmls 取得を JOIN なしでできるようにする: 821710CPU 負荷が少し Go に移った {"pass":true,"score":821710,"success":796189,"fail":0,"messages":[]} access.log
slow.log
|
#28 session store を memcached → redis に: 826249スコアは変わらない {"pass":true,"score":826249,"success":800306,"fail":0,"messages":[]} |
#30
|
この時点でアクセスログとスロークエリログを止めたら 891341 になった {"pass":true,"score":891341,"success":863194,"fail":0,"messages":[]} |
|
#33: layout に埋め込むユーザ情報を redis にキャッシュ: 10245581,000,000 突破 🚀 最も回数が多いクエリの一つを Redis に移したが、スコア的には微増(とはいえ2万上がってるんだけど) {"pass":true,"score":1024558,"success":994140,"fail":0,"messages":[]} access.log
slow.log
|
#34
|
#31 画像書き出しに io.CopyBuffer を利用 + バッファをプール: 1033101微妙〜〜〜 {"pass":true,"score":1033101,"success":1001737,"fail":0,"messages":[]} access.log
slow.log
|
おわり!: 1092235そろそろ別のことやりたいので finish にする MySQL の設定ちょっといじって、アクセスログ・alp用のログ・スロークエリログをオフにした +innodb_buffer_pool_size = 3GB
+innodb_log_file_size = 512M
+max_connections=5000 {"pass":true,"score":1092235,"success":1059635,"fail":0,"messages":[]} |
No description provided.
The text was updated successfully, but these errors were encountered: