Home > Archive > PostgreSQL JDBC > July 2005 > Write to outputstream in PGStream blocks indefinitely









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Write to outputstream in PGStream blocks indefinitely
Jonas Partner

2005-07-04, 3:23 am

I am having a problem where by my application freezes after a period
of time under load. Doing a thread dump shows a large number of
threads seem to be attempting to write to output streams as shown
below. The application code is attempting to add a single row to a
table, including binary data of between 3kb - 10kb. This requires a
restart of the application to clear.

Has anyone else seen similar behaviour? Could this be related to the
issue discussed in
http://archives.postgresql.org/pgsq...12/msg00096.php where
the server and driver are filling their respective buffers. If so
what is the best approach to reducing the likelyhodd of this
happening.

This occurs using PostgreSQL 8.0.3 with JDBC driver version 8.0-311.


Regards

Jonas




"Thread-49" prio=5 tid=0x00488d08 nid=0x1397 runnable [cc77e000..cc77fc28]
at org.postgresql.core.PGStream.Send(PGStream.java:207)
at org.postgresql.core.PGStream.SendStream(PGStream.java:479)
at org.postgresql.core.v3.SimpleParameterList. streamBytea(SimplePa
rameterList.java:118)
at org.postgresql.core.v3.SimpleParameterList. writeV3Value(SimpleP
arameterList.java:201)
at org.postgresql.core.v3.QueryExecutorImpl. sendBind(QueryExecut
orImpl.java:816)
at org.postgresql.core.v3.QueryExecutorImpl. sendOneQuery(QueryEx
ecutorImpl.java:1008)
at org.postgresql.core.v3.QueryExecutorImpl. sendQuery(QueryExecu
torImpl.java:599)
at org.postgresql.core.v3.QueryExecutorImpl. execute(QueryExecuto
rImpl.java:173)
- locked <0xd616e6c0> (a org.postgresql.core.v3.QueryExecutorImpl)
at org.postgresql.jdbc2. AbstractJdbc2Stateme
nt. execute(AbstractJdbc
2Statement.java:389)
at org.postgresql.jdbc2. AbstractJdbc2Stateme
nt. executeWithFlags(Abs
tractJdbc2Statement.java:330)
at org.postgresql.jdbc2. AbstractJdbc2Stateme
nt. executeUpdate(Abstra
ctJdbc2Statement.java:282)

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Oliver Jowett

2005-07-04, 3:23 am

Jonas Partner wrote:
> I am having a problem where by my application freezes after a period
> of time under load. Doing a thread dump shows a large number of
> threads seem to be attempting to write to output streams as shown
> below. The application code is attempting to add a single row to a
> table, including binary data of between 3kb - 10kb. This requires a
> restart of the application to clear.
>
> Has anyone else seen similar behaviour? Could this be related to the
> issue discussed in
> http://archives.postgresql.org/pgsq...12/msg00096.php where
> the server and driver are filling their respective buffers. If so
> what is the best approach to reducing the likelyhodd of this
> happening.


It seems unlikely that this is the cause if you're only doing a single
update..

Things to try:

- Add '?logLevel=2' to your connection URL -- this should spew lots of
driver debug info to stderr.

- If the data's not sensitive, grab a tcpdump capture (-s 1514 -w
/some/output/file) of a connection that hangs and send me a copy (off-list).

- Attach gdb to the corresponding backend to see what it is doing when
everything stops. Perhaps it's got stuck waiting for a lock, or
something similar?

-O

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql
.org

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com