Alguem sabe o pq do erro: com.evermind.server.http.HttpIOException: Broken pipe - URGENTE

Pessoal, tenho um site na internet que tem muitos acessos diários.
Gostaria de saber se alguem sabe qual pode ser a causa deste erro:

    com.evermind.server.http.HttpIOException: Broken pipe
    at com.evermind.server.http.EvermindServletOutputStream.write(EvermindServletOutputStream.java:210)
    at com.evermind.server.http.EvermindJSPWriter.writeOut(EvermindJSPWriter.java:542)
    at com.evermind.server.http.EvermindJSPWriter.jspflush(EvermindJSPWriter.java:439)
    at com.evermind.server.http.EvermindJSPWriter.flush(EvermindJSPWriter.java:415)
    at freemarker.core.Environment.process(Environment.java:17
    at freemarker.template.Template.process(Template.java:232)
    at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:16
    at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530)
    at org.apache.struts2.components.UIBean.end(UIBean.java:484)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:43)
    at _admin._admin__produtos__list._jspService(_admin__produtos__list.java:2560)
    at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
    ...

Se alguem puder me dar uma dica da provavel causa…

Experimente conectar-se ao seu site via Internet (para que a conexão seja “lenta”) e experimente fechar o browser enquanto uma página estiver carregando. Pode ser que essa exceção apareça.

[quote=thingol]Experimente conectar-se ao seu site via Internet (para que a conexão seja “lenta”) e experimente fechar o browser enquanto uma página estiver carregando. Pode ser que essa exceção apareça.

[/quote]

Ok, mas isso tem acontecido muitas vezes… é praticamente impossivel que todos estejam fechando o site enquanto ele esta pra ser carregado.

Isso sempre acontece na pagina inicial do site… logo depois de muitas vezes este erro ocorrido, o site para de funcionar… O site começa a estourar um erro de falta de conexões.

Na pagina inicial tem um flash muito grande, que demora pra carregar… pode ter alguma coisa a ver?

Abraços!

Hum… arquivos estáticos devem ser hospedados no web server, não no web container. Justamente para evitar problemas de servir arquivos grandes.
Por exemplo: digamos que você use o Tomcat + Apache HTTP Server. (No seu caso parece ser o OC4J e o Oracle HTTP Server, mas não tenho certeza).
Normalmente você hospeda os JSPs no Tomcat e os .html, flash, .jpg etc. no Apache HTTP Server.

acho qeu

[quote=thingol]Hum… arquivos estáticos devem ser hospedados no web server, não no web container. Justamente para evitar problemas de servir arquivos grandes.
Por exemplo: digamos que você use o Tomcat + Apache HTTP Server. (No seu caso parece ser o OC4J e o Oracle HTTP Server, mas não tenho certeza).
Normalmente você hospeda os JSPs no Tomcat e os .html, flash, .jpg etc. no Apache HTTP Server. [/quote]

Tens razão, aqui utilizamos o OC4J…

O que sei te informar da estrutura é que todas as imagens e medias ficam em um filesystem no linux que conseguimos acessar então por uma url que é diferente da do site por exemplo.
Acho que essa url mapeia direto a pasta onde contem as medias…

Mas mesmo que essa informação não te ajude… Tu sabe me dizer se o tamanho destes arquivos da pagina inicial pode ser o problema do Broken Pipe e se isso tem algum relação com o erro a seguir:

java.sql.SQLException: Unable to get a physical connection from the database…there are no connections available.

Continua dizendo que isso ocorre na pagina inicial.

Tem alguma ideia de possivel relação?? Sou novo no java e o funcionamento dele no servidor pra mim ainda é uma novidade! Problemas bizarros alias! aeaehha

Abraços!

Vocês usam pool de conexão? Se não usarem, pode ser que algum bug de programação acabe deixando conexões abertas e vocês tenham esgotado o número de conexões possíveis.

[quote=thingol][quote]
java.sql.SQLException: Unable to get a physical connection from the database…there are no connections available.
[/quote]
Vocês usam pool de conexão? Se não usarem, pode ser que algum bug de programação acabe deixando conexões abertas e vocês tenham esgotado o número de conexões possíveis. [/quote]

Usamos um pool de conexões sim…

Vou te passar a classe de conexão pra tu dar uma olhada:

package br.com.renner.dao;

import br.com.renner.util.ServiceLocator;
import br.com.renner.util.ServiceLocatorException;
import java.sql.Connection;

import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DataBaseConnection {

    static final String JAVA_ENVIRONMENT = "java:/comp/env";
    static final String JDBC_NAMING = "jdbc/Site";
    private static ServiceLocator sl = null;

    public static Connection getConnection() throws Exception {

        InitialContext initialContext;

        DataSource dataSource;

        Connection connection = null;

        initialContext = new InitialContext();
        // OC4J
        sl = ServiceLocator.getInstance();
        dataSource = (DataSource) sl.getService("java:comp/env/jdbc/Site");
        dataSource = (DataSource) initialContext.lookup(JDBC_NAMING);

        connection = dataSource.getConnection();

        return connection;
    }
}

Em cada metodo DAO eu abro uma conexão dando getConnection e no finaly destruo tudo com .close() depois = null
alem de fechar os resultSet´s e os preparedStatement.

É assim que funciona…