我遇到了一个问题,我的应用程序偶尔会(每隔几天)在第2步和第3步之间花费5-10秒钟来处理100-200个请求。每秒大约处理100
个请求。
Step 1: S: 220 <SMTP server info>
Step 2: TCP Ack for 220
Step 3: EHLO <Client host name>
我当时使用Java Mail 1.4.5
,现在移到1.6.1
,但遇到相同的问题。
我在创建会话时设置这些属性:
props.setProperty("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", <HOST>);
props.put("mail.smtp.port", <PORT>);
props.put("mail.from", <EMAIL_SENDER>);
props.put("mail.smtp.timeout", <READ_TIMEOUT>);
props.put("mail.smtp.writetimeout", <WRITE_TIMEOUT>);
props.put("mail.smtp.connectiontimeout", <CONN_TIMEOUT>);
我已启用TCP转储,并且看不到在第2步和第3步之间进行的DNS解析。我知道在发送EHLO之前,java邮件将尝试在客户端解析主机名。在EHLO上设置了正确的主机名。
我现在没有设置mail.smtp.localhost
或mail.smtp.localaddress
属性。
有什么建议吗?