Too many SET TimeZone and Application_name queries
Hi,
In our test environment, it was observed that there are too many queries
were getting fired to the database server, even though they are not part of
the SQL query execution.
And the number of queries that were coming to server are very high. Can you
please suggest on how to avoid these queries to the database server ?
2019-10-10 13:37:25 UTC:172.31.77.194(36920):
user1@new_unity_green1:[2549]:LOG:
duration: 0.081 ms statement: *SET application_name='PostgreSQL JDBC
Driver';*
2019-10-10 13:37:25 UTC:172.31.69.112(45682):
user1@new_unity_green0:[3545]:LOG:
duration: 0.036 ms statement: *SET TimeZone='UTC';*
2019-10-10 13:37:25 UTC:172.31.77.194(36902):user1@new_unity_green1:[2112]:LOG:
duration: 0.177 ms statement: *SET TimeZone='Etc/UTC';SET
application_name='PostgreSQL JDBC Driver';*
*Environment*
- PGBouncer 1.9
- JDBC Driver 42.2.8
- Java 1.8
- PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3
20140911 (Red Hat 4.8.3-9), 64-bit
Application Server, pgBouncer and database server are all configured with
UTC only.
=>show timezone;
TimeZone
----------
UTC
Thanks in advance,
Regards, Amarendra
On 10/11/19 4:49 AM, Amarendra Konda wrote:
Hi,
In our test environment, it was observed that there are too many queries
were getting fired to the database server, even though they are not part
of the SQL query execution.And the number of queries that were coming to server are very high. Can
you please suggest on how to avoid these queries to the database server ?
My guess is your application server/framework is setting the below.
What are you using for above?
2019-10-10 13:37:25 UTC:172.31.77.194(36920):
user1@new_unity_green1:[2549]:LOG: duration: 0.081 ms statement: *SET
application_name='PostgreSQL JDBC Driver';*
2019-10-10 13:37:25 UTC:172.31.69.112(45682):
user1@new_unity_green0:[3545]:LOG: duration: 0.036 ms statement: *SET
TimeZone='UTC';*
2019-10-10 13:37:25
UTC:172.31.77.194(36902):user1@new_unity_green1:[2112]:LOG: duration:
0.177 ms statement: *SET TimeZone='Etc/UTC';SET
application_name='PostgreSQL JDBC Driver';**_Environment_*
* PGBouncer 1.9
* JDBC Driver 42.2.8
* Java 1.8
* PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3
20140911 (Red Hat 4.8.3-9), 64-bitApplication Server, pgBouncer and database server are all configured
with UTC only.=>show timezone;
TimeZone
----------
UTCThanks in advance,
Regards, Amarendra
--
Adrian Klaver
adrian.klaver@aklaver.com
Hi Adrian,
Thanks a lot for the response.
We are using JDBC Driver 42.2.8 along with the Tomcat Server on Java 8. As
part of application code, We are *not* setting timezone (or) application
names. One observation was, application was querying columns of the
datatype "timestamp without time zone" .
Regards, Amarendra
On Fri, Oct 11, 2019 at 7:33 PM Adrian Klaver <adrian.klaver@aklaver.com>
wrote:
Show quoted text
On 10/11/19 4:49 AM, Amarendra Konda wrote:
Hi,
In our test environment, it was observed that there are too many queries
were getting fired to the database server, even though they are not part
of the SQL query execution.And the number of queries that were coming to server are very high. Can
you please suggest on how to avoid these queries to the database server ?My guess is your application server/framework is setting the below.
What are you using for above?2019-10-10 13:37:25 UTC:172.31.77.194(36920):
user1@new_unity_green1:[2549]:LOG: duration: 0.081 ms statement: *SET
application_name='PostgreSQL JDBC Driver';*
2019-10-10 13:37:25 UTC:172.31.69.112(45682):
user1@new_unity_green0:[3545]:LOG: duration: 0.036 ms statement: *SET
TimeZone='UTC';*
2019-10-10 13:37:25
UTC:172.31.77.194(36902):user1@new_unity_green1:[2112]:LOG: duration:
0.177 ms statement: *SET TimeZone='Etc/UTC';SET
application_name='PostgreSQL JDBC Driver';**_Environment_*
* PGBouncer 1.9
* JDBC Driver 42.2.8
* Java 1.8
* PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3
20140911 (Red Hat 4.8.3-9), 64-bitApplication Server, pgBouncer and database server are all configured
with UTC only.=>show timezone;
TimeZone
----------
UTCThanks in advance,
Regards, Amarendra
--
Adrian Klaver
adrian.klaver@aklaver.com
On 10/13/19 10:24 PM, Amarendra Konda wrote:
Hi Adrian,
Thanks a lot for the response.
We are using JDBC Driver 42.2.8 along with the Tomcat Server on Java 8.
As part of application code, We are *_not_* setting timezone (or)
application names. One observation was, application was querying columns
of the datatype "timestamp without time zone" .
Well something is explicitly setting the TimeZone. Per this:
https://stackoverflow.com/questions/18447995/postgresql-9-2-jdbc-driver-uses-client-time-zone
I would start with the JDBC driver. You might also try the Postgres JDBC
list:
https://www.postgresql.org/list/pgsql-jdbc/
Re: application_name. I do not see SET for this when I connect using
application_name as part of connection string:
psql "host=localhost dbname=postgres user=postgres
application_name=psql_client"
[unknown]-[unknown]-2019-10-14 07:06:35.508 PDT-0LOG: connection
received: host=::1 port=46246
[unknown]-postgres-2019-10-14 07:06:35.530 PDT-0LOG: connection
authorized: user=postgres database=postgres SSL enabled
(protocol=TLSv1.2, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256,
compression=off)
So I believe this is being explicitly SET by something. Since
'PostgreSQL JDBC Driver' is the Postgres JDBC driver name I would start
there.
Regards, Amarendra
On Fri, Oct 11, 2019 at 7:33 PM Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>> wrote:On 10/11/19 4:49 AM, Amarendra Konda wrote:
Hi,
In our test environment, it was observed that there are too many
queries
were getting fired to the database server, even though they are
not part
of the SQL query execution.
And the number of queries that were coming to server are very
high. Can
you please suggest on how to avoid these queries to the database
server ?
My guess is your application server/framework is setting the below.
What are you using for above?2019-10-10 13:37:25 UTC:172.31.77.194(36920):
user1@new_unity_green1:[2549]:LOG: duration: 0.081 msstatement: *SET
application_name='PostgreSQL JDBC Driver';*
2019-10-10 13:37:25 UTC:172.31.69.112(45682):
user1@new_unity_green0:[3545]:LOG: duration: 0.036 msstatement: *SET
TimeZone='UTC';*
2019-10-10 13:37:25
UTC:172.31.77.194(36902):user1@new_unity_green1:[2112]:LOG:duration:
0.177 ms statement: *SET TimeZone='Etc/UTC';SET
application_name='PostgreSQL JDBC Driver';**_Environment_*
* PGBouncer 1.9
* JDBC Driver 42.2.8
* Java 1.8
* PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc(GCC) 4.8.3
20140911 (Red Hat 4.8.3-9), 64-bit
Application Server, pgBouncer and database server are all configured
with UTC only.=>show timezone;
TimeZone
----------
UTCThanks in advance,
Regards, Amarendra
--
Adrian Klaver
adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
--
Adrian Klaver
adrian.klaver@aklaver.com
On Fri, Oct 11, 2019 at 7:49 AM Amarendra Konda <amar.vijaya@gmail.com>
wrote:
Hi,
In our test environment, it was observed that there are too many queries
were getting fired to the database server,
What does "too many" mean here? Is it just more than you like to see in
your log file, or is there some objective problem?
These look like housekeeping queries which are executed by a connection
pooler each time a connection is checked out of the pool (or perhaps
checked back in). However, they don't seem to be the housekeeping queries
which pgbouncer itself uses. I don't think that JDBC automatically issues
them either, although that might depend on your configuration. So I think
that leaves Tomcat as the most likely culprit. Tomcat does offer a
connection pool. Are you using it?
Cheers,
Jeff
Hi Adrian,
Thanks a lot for the right pointer. Setting -Duser.timezone=UTC has solved
the problem. Now, we don't see any more queries related to *SET TimeZone.*
Thanks again for your time and valuable suggestion.
@Jeff : These queries were sent by the JDBC Driver latest changes, nothing
to do with the Tomcat server. On test server, We were seeing around 45 K +
queries with very minimal load.
Regards, Amarendra
On Mon, Oct 14, 2019 at 7:45 PM Adrian Klaver <adrian.klaver@aklaver.com>
wrote:
Show quoted text
On 10/13/19 10:24 PM, Amarendra Konda wrote:
Hi Adrian,
Thanks a lot for the response.
We are using JDBC Driver 42.2.8 along with the Tomcat Server on Java 8.
As part of application code, We are *_not_* setting timezone (or)
application names. One observation was, application was querying columns
of the datatype "timestamp without time zone" .Well something is explicitly setting the TimeZone. Per this:
https://stackoverflow.com/questions/18447995/postgresql-9-2-jdbc-driver-uses-client-time-zone
I would start with the JDBC driver. You might also try the Postgres JDBC
list:https://www.postgresql.org/list/pgsql-jdbc/
Re: application_name. I do not see SET for this when I connect using
application_name as part of connection string:psql "host=localhost dbname=postgres user=postgres
application_name=psql_client"[unknown]-[unknown]-2019-10-14 07:06:35.508 PDT-0LOG: connection
received: host=::1 port=46246
[unknown]-postgres-2019-10-14 07:06:35.530 PDT-0LOG: connection
authorized: user=postgres database=postgres SSL enabled
(protocol=TLSv1.2, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256,
compression=off)So I believe this is being explicitly SET by something. Since
'PostgreSQL JDBC Driver' is the Postgres JDBC driver name I would start
there.Regards, Amarendra
On Fri, Oct 11, 2019 at 7:33 PM Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>> wrote:On 10/11/19 4:49 AM, Amarendra Konda wrote:
Hi,
In our test environment, it was observed that there are too many
queries
were getting fired to the database server, even though they are
not part
of the SQL query execution.
And the number of queries that were coming to server are very
high. Can
you please suggest on how to avoid these queries to the database
server ?
My guess is your application server/framework is setting the below.
What are you using for above?2019-10-10 13:37:25 UTC:172.31.77.194(36920):
user1@new_unity_green1:[2549]:LOG: duration: 0.081 msstatement: *SET
application_name='PostgreSQL JDBC Driver';*
2019-10-10 13:37:25 UTC:172.31.69.112(45682):
user1@new_unity_green0:[3545]:LOG: duration: 0.036 msstatement: *SET
TimeZone='UTC';*
2019-10-10 13:37:25
UTC:172.31.77.194(36902):user1@new_unity_green1:[2112]:LOG:duration:
0.177 ms statement: *SET TimeZone='Etc/UTC';SET
application_name='PostgreSQL JDBC Driver';**_Environment_*
* PGBouncer 1.9
* JDBC Driver 42.2.8
* Java 1.8
* PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc(GCC) 4.8.3
20140911 (Red Hat 4.8.3-9), 64-bit
Application Server, pgBouncer and database server are all
configured
with UTC only.
=>show timezone;
TimeZone
----------
UTCThanks in advance,
Regards, Amarendra
--
Adrian Klaver
adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>--
Adrian Klaver
adrian.klaver@aklaver.com