Return-Path: X-Original-To: apmail-tomcat-users-archive@www.apache.org Delivered-To: apmail-tomcat-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4ACAF183D8 for ; Thu, 9 Jul 2015 10:18:29 +0000 (UTC) Received: (qmail 22678 invoked by uid 500); 9 Jul 2015 10:18:26 -0000 Delivered-To: apmail-tomcat-users-archive@tomcat.apache.org Received: (qmail 22616 invoked by uid 500); 9 Jul 2015 10:18:26 -0000 Mailing-List: contact users-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Users List" Delivered-To: mailing list users@tomcat.apache.org Received: (qmail 22605 invoked by uid 99); 9 Jul 2015 10:18:25 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Jul 2015 10:18:25 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of aw@ice-sa.com designates 81.169.250.120 as permitted sender) Received: from [81.169.250.120] (HELO thor.wissensbank.com) (81.169.250.120) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Jul 2015 10:16:11 +0000 Received: from thor.wissensbank.com (localhost [127.0.0.1]) by thor.wissensbank.com (Postfix) with ESMTP id 0034B15A60037 for ; Thu, 9 Jul 2015 12:17:58 +0200 (CEST) Received: by thor.wissensbank.com (Postfix, from userid 500) id E355315A60038; Thu, 9 Jul 2015 12:17:58 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on h2401423.stratoserver.net X-Spam-Level: Received: from [192.168.245.214] (HSI-KBW-46-237-244-162.hsi.kabel-badenwuerttemberg.de [46.237.244.162]) (Authenticated sender: andre.warnier@ice-sa.com) by thor.wissensbank.com (Postfix) with ESMTPA id 9504A15A60037 for ; Thu, 9 Jul 2015 12:17:58 +0200 (CEST) Message-ID: <559E4A55.60609@ice-sa.com> Date: Thu, 09 Jul 2015 12:17:57 +0200 From: =?UTF-8?B?QW5kcsOpIFdhcm5pZXI=?= Reply-To: Tomcat Users List User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) MIME-Version: 1.0 To: Tomcat Users List Subject: Re: Tomcat unaware that connection has been dropped References: <559E39A7.3010204@ice-sa.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP X-Virus-Checked: Checked by ClamAV on apache.org X-Old-Spam-Status: No, score=-1.0 required=6.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.0 Tecno Brain wrote: > Hi Andre, > > These files can be huge (for a few of my clients). It can take more than an > hour for the entire file to be generated. Then you also have to take into account that when the browser issues a request to the server, it expects *some* answer within a maximum of about 5 minutes maximum. If it doesn't get that, the browser will drop the connection and display a message like "the server is not responding"... > I just didn't want to save them. I was expecting that if the file was too > big, the process would just be aborted. As it is now, my webapp keeps > working eventhough no browser is receiving the data. > I guess I will have to save them (In S3) an notify my client via e-mail > when the file is available. I am not even sure that in such a case, having the file be generated by a webserver webapp is the best design. It means that when the browser issues such a request, one of the webserver's threads/children is busy with that request for a very extended period of time, unable to do anything else. That looks like an ideal case for a Denial of Service e.g. You may want to re-examine the whole principle of this thing. In some restaurants, if you want some special dish that take a long time to prepare, you have to order it in advance; you can't just walk in and order it from the menu. > I'll also ask Amazon about it. > > Thank you, > > -Jorge > > > On Thu, Jul 9, 2015 at 2:06 AM, André Warnier wrote: > >> Tecno Brain wrote: >> >>> I am running Tomcat 8.0.20 in Ubuntu with Java 1.8u45 >>> This server runs in Amazon EC2 behind an ELB (load balancer), although the >>> cluster size is just one server. >>> >>> My application allows to download some data in CSV format. >>> The CSV data is generated on the fly, and there is no way to known in >>> advance the size of the response. So, the data is an attachment. >>> >>> response.setContentType("text/csv;charset=utf-8"); >>> >>> filename = "data.csv" >>> >>> response.setHeader("Content-Disposition", "attachment; filename=\"" + >>> filename + ".csv\""); >>> >>> >>> The download starts immediately but after 100 MB the browser stopped >>> received data -my internet connection was not the best-, so I canceled the >>> download as it was not progressing anymore. >>> >>> Nevertheless, my web app keeps generating the CSV data, unaware that the >>> connection has been dropped. I was expecting that my code would get an >>> IOException when writing to the servlet OutputStream (which was wrapped by >>> a BufferedOutputStream and wrapped by an OutputStreamWriter). >>> >>> Is this a problem I can solve through the configuration of the NIO >>> connector ? >>> Or is this a problem of Amazon ELB that still consumes the stream even >>> though it can't be forwarded to the browser anymore? >>> >> Yes, that kind of thing. There may also be load-balancers, proxies, >> gateways, etc. between Tomcat and the end-user browser. >> As long as Tomcat itself is able to write to that connection, there is no >> way for an application within Tomcat, to even find out that the ultimate >> client has gone away. >> >> >>> I don't remember having this problem when working with Apache HTTP as the >>> load balancer. If I remember correctly, I would get an error indicating >>> that the client closed the connection. >>> >> Yes, in some cases, because then there was less buffering in-between. >> >> >>> Any pointers are appreciated. >>> >>> >> If your generated files are really that big, I would suggest that the >> Tomcat side writes them to disk to a temporary file, and then returns to >> the client a short response, with a link where it can retrieve that file. >> Then there could be a separate cleanup procedure, which cleans up such >> temporary files when they are more than a certain age. >> >> >> >> -Jorge >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org >> For additional commands, e-mail: users-help@tomcat.apache.org >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org For additional commands, e-mail: users-help@tomcat.apache.org