2010-07-09 95 views
2

可以使用一些帮助。我完全陷入困境,一直试图解决这个问题整整一周。我有一个充当电子邮件服务器的perl脚本。在设置了1,020个SSL套接字之后,每次在每个套接字之前工作正常,它就开始失败。有什么建议么?为什么它说不好的主机名?创建SSL套接字的Perl在1020套接字后出现“Bad hostname”失败

我得到的错误是
设置用户1014 ...完成!
设置用户1015 ...完成!
设置用户1016 ...完成!
设置用户1017 ...完成!
设置用户1018 ...完成!
设置用户1019 ...完成!
设置用户1020 ...错误:new_imap:socket():IO :: Socket :: SSL:Bad hostname'imap.gmail.com'
尝试2:错误:new_imap:socket():IO ::插座:: SSL:主机名错误“imap.gmail.com”

如果我在IO ::插座:: SSL打开调试,它吐出来随着这一串数字,
SSL.pm: 1201:IO :: Socket :: INET配置failederror:00000000:lib(0):func(0):reason(0)

+1

你有1000个套接字同时运行?你不能使用Windows。 – mob 2010-07-09 20:08:53

回答

4

听起来好像你可能用完了文件描述符。你是否同时打开所有这些插座?或者如果你正在关闭他们,也许你的SO_LINGER设置 正在让他们坚持更长的时间比你想?

根据您的平台,您可以配置它以增加每个进程可用的文件描述符的数量 。

+0

哇,完美。很好的答案。这个社区岩石。我会尝试增加文件描述符的上限,看看是否修复它 – casey 2010-07-09 19:57:35

+0

是的,使用BSD :: Resource在脚本启动时增加nofiles限制,现在可以通过1,020现在 – casey 2010-07-14 19:03:19

+0

@casey:很高兴听到它解决了! – 2010-07-14 20:26:12