2017-09-19 23:28:55 Hostdon公式アカウントの投稿 hostdon@mstdn.hostdon.jp

【9月29日のバルス対策について】
Hostdonでは9月29日の朝8:00〜9月30日の朝8:00の24時間の間、バルスによる配送等の遅延を最小限に抑えるため、すべてのインスタンスのSidekiqのプロセス数を2倍に増強し対策をすることになりました。
また、Passengerの設定も一時的に変更します。
よろしくお願いします。

このインスタンスはたぶんPostgresがボトルネックなのでPumsとかSidekiq増やすのは逆効果なんだよな。というわけであしたVACUUM FULL試してみよう。作業中はインスタンスが停止します。

2017-09-19 23:43:22 7_nana🎴マストどすの投稿 7_nana@mastodos.com

このアカウントは、notestockで公開設定になっていません。

@hyoyoshikawa 僕もですー!

master沼コワクナイヨー

2017-09-20 00:50:50 えじょねこの投稿 ejo090@mstdn.nere9.help

まぁgitなんてリーナス・トーバルズってオッチャンたちが自分たちが作ってるLinux-kernelとかいうやつのバージョン管理したいがために作ったものなのでオッチャンたちが使いやすければよかったみたいなところがありますよね

ぎーっとぎーっとのぎっとはぶ https://youtu.be/6IFW97RvT_Q

Attach YouTube

@hyoyoshikawa いろいろ勉強させてもらってます!

2017-09-20 04:23:58 unaristの投稿 unarist@mstdn.maud.io

このアカウントは、notestockで公開設定になっていません。

2017-09-20 07:01:13 zundaの投稿 zundan@mastodon.zunda.ninja
2017-09-20 05:09:00 itokinの投稿 itokin@pawoo.net

このアカウントは、notestockで公開設定になっていません。

バルスる、バルスらない、バルスれば、…

昨夜、8:00 UTCごろにVACUUMを走らせてから、若干レスポンスが良くなっているようです。黄色の線はトラッフィク、緑色の棒がActiveRecordの消費時間。あと10分ほどでこのインスタンスをいったん停止させ、VACUUM FULLしてみます。 https://mastodon.zunda.ninja/media/k9wsae2ai6yLCIaAFZ0

$ heroku pg:info
=== DATABASE_URL, PG_HOBBY_BASIC_URL
Plan: Hobby-basic
Status: Available
Connections: 6/20
PG Version: 9.6.1
Created: 2017-04-20 18:31 UTC
Data Size: 276.7 MB
Tables: 35
Rows: 568195/10000000 (In compliance)

$ heroku pg:diagnose
RED: Hit Rate
Name Ratio
────────────────────── ──────────────────
overall index hit rate 0.9311722873276731
overall cache hit rate 0.6373249488053885
GREEN: Connection Count
GREEN: Long Queries
GREEN: Idle in Transaction
GREEN: Indexes
GREEN: Bloat
GREEN: Blocking Queries
GREEN: Sequences
SKIPPED: Load

この指標はVACUUMしても変化しないんだろうけど。

Sidekiqのキューがはけたら通知をトゥートして止めて、って思ってたけどトゥートした時点でまたキューがたまるなw このトゥートの分のキューがはけたあたりで無言で止めまーす。

VACUUM FULLが終わりました。速くなったかな?メンテナンスモードになっていたのは6分30秒ほどでした。

$ heroku maintenance:on
$ heroku logs -t

まだ再試行してるジョブがあるけれどまあいいだろう。

$ heroku ps:scale web=0
$ heroku pg:psql
zundan-mastodon::DATABASE=> VACUUM FULL;
Time: 138591.313 ms
zundan-mastodon::DATABASE=>
zundan-mastodon::DATABASE=> \q
$ TZ=UTC date
Wed Sep 20 18:11:48 UTC 2017
$ heroku ps:scale web=1

Dynoのupを待って、

$ heroku maintenance:off

2017-09-20 08:16:20 ほたの投稿 hota@mstdn.maud.io

このアカウントは、notestockで公開設定になっていません。

やっぱりクリームは舐めるものなのかw

pg:bloatで見えるwasteはずいぶん小さくなった。pg:diagnoseはやっぱり変化していない。Data Sizeは40MB現象。よしよし。

$ heroku pg:info
=== DATABASE_URL, PG_HOBBY_BASIC_URL
Plan: Hobby-basic
Status: Available
Connections: 5/20
PG Version: 9.6.1
Created: 2017-04-20 18:31 UTC
Data Size: 239.1 MB
Tables: 35
Rows: 573807/10000000 (In compliance)

減少

@popneo それぞれのローカル時間で言われても混乱するだけですからねえ

えーそっかーrubyを2.4.2に上げるの大変なん…

Api::V1::NotificationsController#indexで遅いのはapp/controllers/api/v1/notifications_controller.rbからdef browserable_account_notificationsと辿ってcurrent_account.notificationsあたりかなあ。実装はapp/models/account.rbのhas_many :notificationsっぽい (たいへん)。

2017-09-20 13:34:35 ryanakの投稿 ryanak@mstdn.ryanak.xyz

実を言うとOStatusはもうだめです。
突然こんなこと言ってごめんね。
でも本当です。

2、3日後にmaster追従勢がビチビチし始めます。
それが終わりの合図です。

程なく大きめのリリースが来るので
気をつけて。
それがやんだら、少しだけ間をおいて
終わりがきます。

2017-09-20 14:04:33 しむどん三度無視の投稿 sximada@mstdn.jp

このアカウントは、notestockで公開設定になっていません。

そうなるよねwww

遅いApi::V1::NotificationsController#indexのバックトレースが見えた!らっきー!(ちゃんと有料プランにしてないのでトランザクションが多すぎると見えなくなる)

/app/models/status.rb in map at line 177 を見るべきだとのこと。 https://mastodon.zunda.ninja/media/RqAw5sNa1O6S7byWs7c

SQLも見えた。下記が101,527.7 msかけて2701行返したとのこと

SELECT "statuses"."reblog_of_id" FROM "statuses" WHERE ("statuses"."reblog_of_id" = ? OR "statuses"."reblog_of_id" IS NULL) AND "statuses"."account_id" = ? ORDER BY "statuses"."id" DESC

Timelines::PublicController#showではapplication_controller.rb:89が120s。

SELECT "statuses"."id", "statuses"."updated_at" FROM "statuses" LEFT OUTER JOIN "accounts" ON "accounts"."id" = "statuses"."account_id" WHERE ("statuses"."local" = ? OR "statuses"."uri" IS NULL) AND "statuses"."visibility" = ? AND (statuses.reblog_of_id IS NULL) AND (statuses.reply = FALSE OR statuses.in_reply_to_account_id = statuses.account_id) AND "accounts"."silenced" = ? ORDER BY "statuses"."id" DESC LIMIT ?

ソートにはそーとー時間かかるよねー

たぶん最近のだけに限定すればいいんだろうけどActiveSupportでどう書くのやらw 仕事にもどろう。

Api::V1::Timelines::HomeController#showでも/app/models/status.rb:177が38秒かけて2702行返した例があった。

SELECT "statuses"."reblog_of_id" FROM "statuses" WHERE ("statuses"."reblog_of_id" IN (?) OR "statuses"."reblog_of_id" IS NULL) AND "statuses"."account_id" = ? ORDER BY "statuses"."id" DESC

しかしScoutいいなあ。有料版にしたいなあ

とか書いてたらH12ばっかりになりました。なんぞーなんぞー。

仕事に戻れー

じゃなくてActiveRecord w

遅いエンドポイントへのリクエストが重なってPumaのリクエストのキューが長くなったのが原因だったようです。ならしょーがない← https://mastodon.zunda.ninja/media/gri0_HG0I1B6A4ebcMA

@unarist なーんと!見つかってよかった。

後で自分で見返そうと思って記録しておいたら見ていただいちゃって、どうもありがとうございます!

GitHubのコード検索、ちょっとゆるふわすぎる感じ

@unarist diffがあればうちの弱っちいPostgresで試してみることもできますです〜

@unarist とりあえずEXPLAIN ANALYZEです。OR "reblog_of_id" IS NULLを無くすとだいぶ速くなって少しだけ返ってくる行が多いようです。行が多いのがよくわからない…。

https://gist.github.com/zunda/9abfa85dc1f72d037e058d5e481c6585

他のインスタンスへの迷惑はないだろうと思うので、.compact足してしばらく運用してみますね。

reblog_of_id IS NULLの有無でのクエリの実行速度の違い

@unarist あー、やっぱり。account_idを1にして(ぼっちなので)、reblog_of_idを11にして https://gist.github.com/zunda/9abfa85dc1f72d037e058d5e481c6585 を更新しました。25倍くらい速度が違いますね。これからパッチ適用版にリブートしまーす。

reblog_of_id IS NULLの有無でのクエリの実行速度の違い

\2017-09-21 03:58このインスタンスにパッチを当てました/

https://github.com/zunda/mastodon/commit/c7cd562442411f4f22c8f653a51ac2c3611cca77

StatusRelationshipsPresenterでstatus_idsがコンパクトになるよ。

Compact status_ids in StatusRelationshipsPresenter · zunda/mastodon@c7cd562

@unarist https://github.com/zunda/mastodon/commit/c7cd562442411f4f22c8f653a51ac2c3611cca77 を当てました。しばらく様子を見てみますね。

Compact status_ids in StatusRelationshipsPresenter · zunda/mastodon@c7cd562

SubwayTooterからのリロードがサクサクになった気がする♪

@hyuki カスタム絵文字は1.6.1のタグが付いた後にマージされた機能です。次のリリースには入りそうですがいつなんだろう

https://github.com/tootsuite/mastodon/pull/4988
https://github.com/tootsuite/mastodon/pull/5002

Custom emoji by Gargron · Pull Request #4988 · mastodon/mastodon
Custom emoji by Gargron · Pull Request #4988 · mastodon/mastodon

\みどりの :green_dango: だんご/

2017-09-20 19:17:11 zundaの投稿 zundan@mastodon.zunda.ninja
2017-09-20 18:48:13 智絵里さん係【うしHK】🍀📝🐈🎨🌙♠の投稿 chierisan_kakari@imastodon.net

なにがにゃーんですかはじをしりなさい

2017-09-20 18:48:23 智絵里さん係【うしHK】🍀📝🐈🎨🌙♠の投稿 chierisan_kakari@imastodon.net

にゃーんにゃーん

にゃーんにゃーんにゃーん

2017-09-20 18:50:18 xanac(希)🐺jpの投稿 rk_asylum@mstdn.jp

このアカウントは、notestockで公開設定になっていません。

2017-09-20 18:50:24 xanac(希)🐺jpの投稿 rk_asylum@mstdn.jp

このアカウントは、notestockで公開設定になっていません。

2017-09-20 19:18:07 zundaの投稿 zundan@mastodon.zunda.ninja
2017-09-20 13:49:01 wakinの投稿 wakin@biwakodon.com

このアカウントは、notestockで公開設定になっていません。

なるほど

HerokuでMastodon走らせるの楽ですよー。Postgresをまともなのにするとちょっと高いけど。

USJには行ったことないけどUSJの敷地に建ってた工場なら行ったことあるよw

Redisの稼働状況。使用メモリは25MB中2MB程度、接続数は最大20のうち12程度。

今の10倍くらいの長さのキューを保持できるということは、処理速度が同じだとしてだいたい今の10倍くらいの流速でトゥートが配達されてきても耐えられるということになるのかな?一方、接続数にも少し余裕があるのでSidekiqのスレッド数を増やすこともできそう。 https://mastodon.zunda.ninja/media/b4JWHHFyDLweUCP9wMI

95パーセンタイルでみると、status_idsを.compactするようになって(c7cd5624)から、応答時間のスパイクが減りました。このまま落ち着いてくれてるといいな。 https://mastodon.zunda.ninja/media/t_GCsVJzBnIueUCnoV0

あそうかタイムラインもRedisか

2017-09-20 23:33:58 xanac(希)🐺jpの投稿 rk_asylum@mstdn.jp

このアカウントは、notestockで公開設定になっていません。