当前位置:  开发笔记 > 编程语言 > 正文

如何在内存使用量较大的Perl守护程序中处理多个套接字?

如何解决《如何在内存使用量较大的Perl守护程序中处理多个套接字?》经验,为你挑选了0个好方法。

我使用IO :: Socket :: INET使用Perl创建了一个客户端 - 服务器程序.我通过基于CGI的站点访问服务器.我的服务器程序将作为守护程序运行,并将接受多个同时连接.我的服务器进程占用大约100MB的内存空间(9个大型阵列,许多阵列......).我希望这些哈希驻留在内存中并共享它们,这样我就不必为每个连接创建它们.哈希创建需要10-15秒.

每当通过套接字接受新连接时,我会分叉一个新进程来处理收到的每个连接的处理.由于父进程很大,每次我分叉时,处理器都会尝试为新的子进程分配内存,但是由于内存有限,需要很长的时间来生成一个新的子进程,从而增加了响应时间.很多时候,即使是单个连接,它也会挂起.

父进程创建9个大哈希.对于每个孩子,我需要以只读模式引用一个或多个哈希.我不会通过孩子更新哈希.我想使用像copy-on-write这样的东西,通过它我可以与所有孩子共享整个100mb或由父母创建的全局变量?或任何其他机制,如线程.我希望服务器每秒至少得到100个请求,它应该能够并行处理所有这些请求.平均而言,孩子将在2秒内退出.

我在Windows XP上使用Cygwin只有1GB的RAM.我没有找到任何方法来克服这个问题.你能提出什么建议吗?如何共享变量并每秒创建100个子进程并管理它们并同步它们,

谢谢.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有