#1 2019-10-14 08:54:46

RMARSOT
Member
Registered: 2019-10-07

Random internal server error on Excel-Export

Hi,

I have a problem with an Excel-Export.
Excel-Export is arround 185 000 lines and 30 Columns (20MB size).
It's built from ORACLE Sql query on DB server.
Sometimes it's ok, and smetimes it fail with Internal Server Error.

Could you help me to tune some of my settings?
I have try to increase DB querytimeout parameter in datasource > parameter.cf, but I still got the same error.

Catalina.out logs said:

at net.datenwerke.rs.base.service.reportengines.table.output.generator.XLSStreamOutputGenerator.close(XLSStreamOutputGenerator.java:281) ~[reportserver.jar:na]
        at net.datenwerke.rs.base.service.reportengines.table.TableReportEngine.createReport(TableReportEngine.java:296) ~[reportserver.jar:na]
        ... 63 common frames omitted
Caused by: java.io.IOException: Relais brisé (pipe)

tahnk you,

Richard.

Offline

#2 2019-10-14 13:15:14

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Random internal server error on Excel-Export

Hi Richard,

what does this mean? "Relais brisé (pipe)"

Regards,
Eduardo

Offline

#3 2019-10-15 07:36:07

RMARSOT
Member
Registered: 2019-10-07

Re: Random internal server error on Excel-Export

Hi Eduardo,

I think it's seem "broken pipe".

It seems that it is caused by something causing the connection to close. (It is not the application that closed the connection: that would have resulted in a different exception.)

Thank you.

Offline

#4 2019-10-15 07:44:43

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Random internal server error on Excel-Export

Hi Richard,

That usually means that something along the line (and not the client) decided the TCP/IP connection should be terminated. Are there any firewalls/routers, etc. in between your application and the Oracle server?

Please check this for oracle: https://knowledgebase.progress.com/arti … ticle/7935

How long do any of these connections sit idle? If it's more than a few minutes, I'd consider configuring your connection pool to not let connections sit idle for more than a minute or so, leaving connections idle exposes them to more risk of being disconnected outside of the control of the client. It doesn't take long to create a new JDBC connection with Oracle, a fraction of a second in nearly all cases, and a few 10's of milliseconds in the best cases.

--> DB connections are managed by a connection pool (c3p0 Connection Pool). This increases the stability of the system, since you can define an upper limit of simultaneously open connections and, furthermore, it improves the performance at the same time since database connections are kept open and ready for use.  Please check your connection pool settings here: /etc/datasources/pool.cf. Information on the connection pool here: https://reportserver.net/en/guides/conf … tasources/ : "4.1.2. Configuring the Connection Pool". 

Also you may check if these settings help: 
<testConnectionOnCheckout>true</testConnectionOnCheckout>
<testOnBorrow>true</testOnBorrow>
Remember to load your configuration again with "config reload" after you make changes. 

Also maybe helpful:
your oracle db has a max number of sessions defined. This parameter defines the maximum number of sessions available at a given point in time! To increase the maxIdleTime means to occupy the connections longer, thus resulting in less sessions available for your connections. When all sessions in the reportserver's session pool are occupied, no report execution is possible (no connection available). Therefore, increase the number of sessions in the session pool (maxPoolSize) only if the max number of sessions of your database allows it. Other than that, optimize the query..
Its balancing resources against query complexity and execution duration. A strategy can be to prepare data for reporting such that query time is minimized (materialized view). In our model, its the duty of the database to supply fast query response.

Regards,
Eduardo

Offline

Board footer

Powered by FluxBB