[英]Error sending SMTP message from Tomcat: No buffer space available
我在服务器上运行Tomcat7 (现在它是一个虚拟机,但应配置为无限连接)。
我与SMTP服务器以及Facebook服务器有联系。 我的车流量约为250马力/分钟。
我正在运行djabberd,平均时间约为几百个连接用户。
有时我得到:
javax.mail.MessagingException: Could not connect to SMTP host: xxx.xxx.xxx.xxx, port: xxxxx;
nested exception is:
java.net.SocketException: No buffer space available
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at xxxxxxxxxxxxxxxx.controllers.EmailManager.sendEmail(EmailManager.java:151)
或连接到Facebook服务器的相同错误。
netstat -n | wc -l
348
Tomcat可以接受acceptCount =“1024”连接。
我应该去哪里调查?
[更新1]
发送电子邮件 :
Context envContext = (Context) initContext.lookup("java:/comp/env");
session = (javax.mail.Session) envContext.lookup("mail/emailSession");
MimeMessage message = new MimeMessage(session);
//....
Transport.send(message);
配置:
<resource-ref>
<description>
JNDI javamail session resource reference
</description>
<res-ref-name>mail/emailSession</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Facebook连接:
FacebookClient facebookClient = new DefaultFacebookClient(accessToken);
User user = facebookClient.fetchObject("me", User.class);
什么OS? Linux呢? 您可能达到了客户端套接字最大数量的限制,没有无限连接。 在你的应用程序的某个地方,你没有关闭连接,或者你只是打开了太多。 “太多”可能比您想象的要低得多,因为它受到进程可以打开的文件描述符的最大数量的限制。 如果您正在运行Linux,请查看http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.