- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 kubernetes 上部署一个自动化的高可用 PostgreSQL 集群。在 master 故障转移或 master 临时故障的情况下,standby 丢失流复制连接,并且在重试时,它需要很长时间才能失败并重试。
我使用 PostgreSQL 10 和流式复制(cluster-main-cluster-master-service
是一种始终路由到主服务器并且所有副本都连接到该服务进行复制的服务)。我已经尝试在 recovery.conf
和 wal_receiver_timeout< 的
在备用的 primary_conninfo
中设置 connect_timeout
和 keepalive
等配置postgresql.conf
中,但我无法使用它们取得任何进展。
首先,当 master 宕机时,复制停止并出现以下错误(状态 1):
2019-10-06 14:14:54.042 +0330 [3039] LOG: replication terminated by primary server
2019-10-06 14:14:54.042 +0330 [3039] DETAIL: End of WAL reached on timeline 17 at 0/33000098.
2019-10-06 14:14:54.042 +0330 [3039] FATAL: could not send end-of-streaming message to primary: no COPY in progress
2019-10-06 14:14:55.534 +0330 [12] LOG: record with incorrect prev-link 0/2D000028 at 0/33000098
在调查 Postgres 事件后,我发现 WalReceiver 进程卡在 LibPQWalReceiverConnect
wait_event(状态 2)中,但超时比我配置的要长得多(尽管我将 connect_timeout
设置为10秒,大约需要2分钟)。然后,它失败并出现以下错误(状态 3):
2019-10-06 14:17:06.035 +0330 [3264] FATAL: could not connect to the primary server: could not connect to server: Connection timed out
Is the server running on host "cluster-main-cluster-master-service" (192.168.0.166) and accepting
TCP/IP connections on port 5432?
在接下来的尝试中,它成功连接了主节点(状态 4):
2019-10-06 14:17:07.892 +0330 [5786] LOG: started streaming WAL from primary at 0/33000000 on timeline 17
我还尝试在发生卡住事件(状态 2)时终止进程,当我这样做时,它会再次启动进程并连接,然后正常传输(跳转到状态 4)。
查看netstat后,我还发现在walreceiver进程(failover case)中,有一个SYN_SENT
状态的连接到old master。
最佳答案
connect_timeout
控制 PostgreSQL 等待复制连接成功的时间,但这不包括建立 TCP 连接。
要减少内核等待成功响应 TCP SYN 请求的时间,请减少重试次数。在 /etc/sysctl.conf
中,设置:
net.ipv4.tcp_syn_retries = 3
并运行 sysctl -p
。
这应该会显着减少时间。
过多地降低该值可能会使您的系统不太稳定。
关于Postgresql WalReceiver 进程等待连接主机,无论 "connect_timeout",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256748/
我正在尝试在 kubernetes 上部署一个自动化的高可用 PostgreSQL 集群。在 master 故障转移或 master 临时故障的情况下,standby 丢失流复制连接,并且在重试时,它
我是一名优秀的程序员,十分优秀!