odyssey
odyssey copied to clipboard
What are the differences/similarities with pgbouncer?
SUBJ
But also I noticed that status is reported in pgbouncer format. @kwent created pgbouncerhero - status page for big number of pgbouncer instances. Is there anything similar for odyssey, or maybe since status is reported in the same way, it can be used with odyssey too.
Odyssey allows to scale processing performance by adding additional worker threads sharing same server pools. Something similar could be achieved in PgBouncer by starting several processes listening same port. Yet they will live their own life and have separate server connections.
It allows to automatically rollback transactions and cancel PostgreSQL backends on client disconnections. Also, it tries to avoid unnecessary parameter settings for reuse, server disconnections and generally optimize io by pipelining requests and replies. Network support optimization in PgBouncer is quite good too.
Odyssey tries to forward real error messages from PostgreSQL when possible. For example, when it cannot connect to server.
It allows to have more settings per pool that can be tweaked explicitly for database:user:server
. For example: different TLS settings per server, idle times, limits, auth modes, cancel, error forwarding and so on.
It should be much easier with Odyssey to track client errors by id and just grep it or aggregate its log file. Odyssey allows to configure its log format for easier parsing.
Odyssey partially compatible with PgBouncer console commands. We used it for smoother migration in our monitoring. Currently following PgBouncer commands are supported: show stats
, show servers
, show clients
, show lists
. Probably monitoring tools should work and if something is not supported it should not be hard to implement it.
In general SQL feature map for pooling modes should be the same for Odyssey and PgBouncer.
Following stuff is not implemented at the moment: configuration file reload by signal, support for unix sockets, authentication by PAM and HBA.
Odyssey currently runs only on Linux (mostly because of event loop implementation epoll(7)
). It should be not a problem to add BSD systems support in feature.
Any easy way to monitor odyssey on Prometheus ?