mastodon通过sidekiq处理通知、时间线、点赞和跟其他实例通讯的任务。当实例上的注册的人变多或者整个联邦宇宙交换的信息量变多时候sidekiq容易堵塞从而时间线会延迟。
解决办法是增加sidekiq进程和队列,默认是所有队列仅用一个sidekiq进程。
在/etc/systemd/system/
目录创建一个名为mastodon-sidekiq2.service
的文件。
复制粘贴以下内容:
[Unit]
Description=mastodon-sid
After=network.target
[Service]
Type=simple
User=mastodon
WorkingDirectory=/home/mastodon/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=20"
Environment="MALLOC_ARENA_MAX=2"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 20 -q default -q pull -q ingress
TimeoutSec=15
Restart=always
[Install]
WantedBy=multi-user.target
保存后运行 systemctl daemon-reload
重载systemd配置。
然后启动systemctl start mastodon-sidekiq2
之后在mastodon后台里看到多一个有default,pull,ingress线程的sidekiq进程。
当然也可以单独拆分队列。但是线程总数量不能超过PostgreSQL数据库的最大连接数。并且保证只有一个scheduler进程。