RE: Timeout parameters
Tsunakawa, Takayuki <tsunakawa.takay@jp.fujitsu.com>
From: "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>
To: "Nagaura, Ryohei" <nagaura.ryohei@jp.fujitsu.com>, "Jamison, Kirk" <k.jamison@jp.fujitsu.com>
Cc: 'Michael Paquier' <michael@paquier.xyz>, "AYahorau@ibagroup.eu" <AYahorau@ibagroup.eu>, 'Fabien COELHO' <coelho@cri.ensmp.fr>, "'pgsql-hackers@postgresql.org'" <pgsql-hackers@postgresql.org>, "MikalaiKeida@ibagroup.eu" <MikalaiKeida@ibagroup.eu>
Date: 2019-02-21T07:56:05Z
Lists: pgsql-hackers
From: Nagaura, Ryohei [mailto:nagaura.ryohei@jp.fujitsu.com] > > Maybe. Could you suggest good description? > Clients wait until the socket become readable when they try to get results > of their query. > If the socket state get readable, clients read results. > (See src/interfaces/libpq/fe-exec.c, fe-misc.c) > The current pg uses poll() to monitor socket states. > "socket_timeout" is used as timeout argument of poll(). > (See [1] about poll() and its arguments) > > Because "tcp_user_timeout" handles the timeout before and after the above > procedure, > there are different monitoring target between "socket_timeout" and > "tcp_user_timeout". > When the server is saturated, "statement_timeout" doesn't work while > "socket_timeout" does work. > In addition to this, the purpose of "statement_timeout" is to reduce > server's burden, I think. OK, I understand your intent. What I asked Kirk-san is to suggest a description for socket_timeout parameter that the user would see in PostgreSQL documentation. > My proposal is to enable clients to release their resource which is used > communication w/ the saturated server. I thought the primary purpose is to prevent applications from hanging too long, so that the user does not have to wait infinitely. Releasing resources is a secondary purpose. Regards Takayuki Tsunakawa
Commits
-
Add support TCP user timeout in libpq and the backend server
- 249d64999615 12.0 landed