我试图找出为什么我重新启动后,在我的postgresql日志中得到一些奇怪的条目:
2010-05-14 11:30:25 EEST LOG: database system was shut down at 2010-05-14 11:30:22 EEST 2010-05-14 11:30:25 EEST LOG: autovacuum launcher started 2010-05-14 11:30:25 EEST LOG: database system is ready to accept connections 2010-05-14 11:30:25 EEST LOG: incomplete startup packet 2010-05-14 11:30:40 EEST WARNING: there is already a transaction in progress 2010-05-14 11:30:40 EEST LOG: could not receive data from client: Connection reset by peer 2010-05-14 11:30:40 EEST LOG: unexpected EOF on client connection
首先,这是2010-05-14 11:30:25 EEST LOG: incomplete startup packet ,这使我感到2010-05-14 11:30:25 EEST LOG: incomplete startup packet 。 任何人都知道为什么会发生这种情况
而且,这一个是非常奇怪的: 2010-05-14 11:30:40 EEST WARNING: there is already a transaction in progress …
incomplete startup packet意味着连接build立,但Postgres服务器没有得到期望的握手(我得到了很多这些监视系统检查,以确保端口5432是开放的,但不够聪明,实际login查询数据库)。
这是否是一个问题取决于你是否期望有一些连接而不是握手:对于我来说,每5分钟看一次就不是问题,但是如果你没有预料到这个信息可能表明你正在端口扫描。
WARNING: there is already a transaction in progress意味着什么:有人试图在交易中开始交易( BEGIN ... BEGIN )。
如果你看到很多人在程序中写了一些不好的SQL,你应该find/修正它,因为相应的COMMIT和ROLLBACK语句可能不会达到你所期望的。 如果你看到它一次,永远不会再有人可能胖了psql的交易。
在我们的环境中,不完整的启动数据包是由haproxy在可编程的时间间隔(对于我们来说,每600000毫秒)发送一次心跳引起的。 我们在tcp模式下使用haproxy转发业务用户请求,再次运行postgres报告。