加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl脚本,使用fork或线程?

发布时间:2020-12-16 06:24:17 所属栏目:大数据 来源:网络整理
导读:我正在编写一些脚本来收集来自多个服务器的数据,这个数字会增长,并且我会尝试将来证明我的脚本,但是我有点卡住了. 所以首先我有一个脚本在mysql数据库中查找IP,然后连接到每个服务器抓取一些信息,然后再次将其放入数据库. 我一直认为这是有限的时间来做这个,
我正在编写一些脚本来收集来自多个服务器的数据,这个数字会增长,并且我会尝试将来证明我的脚本,但是我有点卡住了.

所以首先我有一个脚本在mysql数据库中查找IP,然后连接到每个服务器抓取一些信息,然后再次将其放入数据库.

我一直认为这是有限的时间来做这个,如果我有100台服务器,需要一点时间去每个服务器获取信息,然后将其推送到数据库.所以我想过在perl中使用fork或thread?

在我的情况下哪个是首选?而且有人有任何例子吗?

谢谢!

编辑:好的,所以需要更多的信息:我在Linux上运行,我认为我可以获得主脚本来收集数据库信息,然后发送每个子流程/任务来连接和收集信息然后再推送信息到数据库.

解决方法

哪个最好取决于您的需求;但是我的经验是值得的:

上次我使用perl的线程时,我发现它实际上比分叉更慢,更有问题,因为:

>线程无论如何都会复制所有数据,就像线程一样,但是事先就完成了
>线程并不总是在退出时清理复杂的资源;导致内存泄漏缓慢,而这在目的地是服务器时是不可接受的
>几个模块没有干净地处理线程,包括我使用的数据库模块,这些模块被严重混淆.

需要注意的一个陷阱是“forks”库,它模拟“线程”但使用真正的分叉.我在这里遇到的问题是它模仿的许多行为正是我试图摆脱的.我最终使用了经典的老式“fork”并使用套接字在需要的地方进行通信.

fork的问题(库,而不是fork命令):

>仍然困惑数据库系统>共享变量仍然非常有限>覆盖’fork’命令,导致软件中其他地方出现意外行为

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读