自我DDoS

我不确定这是否是一个 bug,但我似乎遇到了论坛自我拒绝服务攻击的情况。
每天网站都会宕机,因为它似乎在创建一个索引:

CREATE INDEX CONCURRENTLY temp_idx_recent_regular_post_search_data
ON post_search_data USING GIN(search_data)
WHERE NOT private_message AND post_id >= 0

这反过来又会创建大量并行查询:

SELECT “posts”.“id”, “posts”.“user_id”, “posts”.“topic_id”, “posts”.“post_number”, “posts”.“raw”, “posts”.“cooked”, “posts”.“created_at”, “posts”.“updated_at”, “posts”.“reply_to_post_number”, “posts”.“reply_count”, “posts”.“quote_count”, “posts”.“deleted_at”, “posts”.“off_topic_count”, “posts”.“like_count”, “posts”.“incoming_link_count”, “posts”.“bookmark_count”, “posts”.“score”, “posts”.“reads”, “posts”.“post_type”, “posts”.“sort_order”, “posts”.“last_editor_id”, “posts”.“hidden”, “posts”.“hidden_reason_id”, “posts”.“notify_moderators_count”, “posts”.“spam_count”, “posts”.“illegal_count”, “posts”.“inappropriate_count”, “posts”.“last_version_at”, “posts”.“user_deleted”, “posts”.“reply_to_user_id”, “posts”.“percent_rank”, “posts”.“notify_user_count”, “posts”.“like_score”, “posts”.“deleted_by_id”, “posts”.“edit_reason”, “posts”.“word_count”, “posts”.“version”, “posts”.“cook_method”, “posts”.“wiki”, “posts”.“baked_at”, “posts”.“baked_version”, “posts”.“hidden_at”, “posts”.“self_edits”, “posts”.“reply_quoted” …

这里的问题是我正在使用一个托管数据库,该数据库的连接池为 197,但很快就被填满了。

这闻起来像是您的数据库性能不足或配置不当。

您的数据库有多大?数据库服务器的规格是什么?

1 个赞

Digitalocean 管理
8 GB RAM / 4 vCPU / 160 GiB 磁盘 / 仅主节点 / TOR1 - PostgreSQL 15

@Eviepayne 您是否已解决此问题?如果尚未解决,您能告诉我们您还尝试了哪些操作以及发现了关于您问题的哪些信息?这是使用官方安装说明创建的支持的安装吗?

据我所知,我认为问题已经解决了。我不知道我是如何修复它的,但它似乎在更新到较新的容器修订版后停止了。
我当前的版本是:4d20baa8754fd782f01fbf8bf5c687cae846915a

我的安装在这一点上与支持的安装相当不同。
标准安装适用,但变化在于:

外部数据库(由 digitalocean 管理)
外部缓存(由 digitalocean 管理的 valkey)
固定的容器修订版
ACME 客户端已重新配置为 DNS 挑战

过去曾出现过问题,我无法更新,因为 pgvector 版本发生变化,并且在 DO 上对于 pg15 不可用,该问题现已解决,所以我进行了更新,自我 DDoS 行为似乎不再发生。

我认为我之前使用的版本是:db67a0841e8e14ae70de0890441f8158c50ae3c9

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.