开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: SoloCat
收起左侧

[易语言纯源码] HPsocket- Disk_BufferPtr磁盘组包 demo

[复制链接]
结帖率:100% (3/3)
发表于 2021-9-26 18:22:09 | 显示全部楼层   广东省汕头市
除非传输几GB的东西才需要硬盘组包
回复 支持 反对

使用道具 举报

结帖率:65% (36/55)

签到天数: 18 天

 楼主| 发表于 2021-9-26 18:24:59 | 显示全部楼层   河北省石家庄市
LLJ 发表于 2021-9-26 18:22
除非传输几GB的东西才需要硬盘组包

那你的web应用可以很轻松被人打掉了。随便传点1M的图片 内存占用。都导致你web服务没内存去接受新的客户。
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2021-9-26 18:52:47 | 显示全部楼层   广东省汕头市
糖心疼 发表于 2021-9-26 18:24
那你的web应用可以很轻松被人打掉了。随便传点1M的图片 内存占用。都导致你web服务没内存去接受 ...

没有问题的,不管是接收还是发送1万客户的1M的图片,如果这个图片不需要保存,使用后直接释放内存。
HPsocket工作在IOCP线程池,如果我的程序分配了 CPU核心数*2 工作线程,那么不会马上接受这1万MB的数据,而是等待有空闲线程才接收,所以不会内存不足,但这并不慢,可以充分利用CPU。反而中间多了个硬盘才慢。
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2021-9-26 19:15:29 | 显示全部楼层   广东省汕头市
本帖最后由 LLJ 于 2021-9-26 19:26 编辑

如果确实需要保存客户传来的东西,比如那个东西就是个文件需要保存在服务器,那硬盘缓冲就刚刚好。这对于网盘WEB服务器可能是不错的解决方案。
如果客户传来的东西用完就丢,则不需要中间多个硬盘。

如果服务器是要发送给客户,例如生成二维码图片,做扫码登录 等,也不需要保存图片,只需要保存对应token,图片直接传给客户就可以释放内存了。
回复 支持 反对

使用道具 举报

结帖率:65% (36/55)

签到天数: 18 天

 楼主| 发表于 2021-9-26 19:31:34 | 显示全部楼层   河北省石家庄市
LLJ 发表于 2021-9-26 19:15
如果确实需要保存客户传来的东西,比如那个东西就是个文件需要保存在服务器,那硬盘缓冲就刚刚好。这对于网 ...

老铁。多做点项目。实践就知道了。web应用。功能是次要。首要的目标是可以同时接受多少客户。如何做到最大程度的轻盈。内存一共就那么点。并发一千的应用。你考虑过吗。做API 很多都是客户多线程跑的接口。所以说。你考虑的。可能只是一般应用。
回复 支持 反对

使用道具 举报

结帖率:65% (36/55)

签到天数: 18 天

 楼主| 发表于 2021-9-26 19:35:42 | 显示全部楼层   河北省石家庄市
本帖最后由 糖心疼 于 2021-9-26 19:36 编辑
LLJ 发表于 2021-9-26 18:15
这是SSD的专杀程序!

你真的懂高并发吗?你是不是给每个socket都了一个线程?如果不是则不用担心栈内存不 ...

给你解释一下吧。body事件传输 有一个固定的大小。这个内存空间是复用的。也就意味着如果这个大小是1000 那你发5000个 他是需要你自行内存组包消耗 5000个字节的。body事件会触发5次 并非你所谓的释放,因为HP根本就不会把你这5000个字节的数据来用内存保存。他是每次1000来保存。事件一过就释放。 HP 本身是轻盈的。就是因为他固定了大小。而我这种组包方式也是轻盈的。原理几乎等同。不需要程序占用任何额外的内存。
回复 支持 反对

使用道具 举报

结帖率:65% (36/55)

签到天数: 18 天

 楼主| 发表于 2021-9-26 19:37:49 | 显示全部楼层   河北省石家庄市
LLJ 发表于 2021-9-26 19:15
如果确实需要保存客户传来的东西,比如那个东西就是个文件需要保存在服务器,那硬盘缓冲就刚刚好。这对于网 ...

最后再说一句啊。请不要在这纸上谈兵。如果你觉得你比我懂。请拿出你的作品来。否则一切都是空谈!
回复 支持 反对

使用道具 举报

结帖率:65% (36/55)

签到天数: 18 天

 楼主| 发表于 2021-9-26 19:39:59 | 显示全部楼层   河北省石家庄市
LLJ 发表于 2021-9-26 18:52
没有问题的,不管是接收还是发送1万客户的1M的图片,如果这个图片不需要保存,使用后直接释放内存。
HPso ...

HP的事件触发是 固定尺寸大小。多次触发body事件。 所以 如果内存不做二次组包。根本就不可能接收到完整图片。
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2021-9-26 19:43:07 | 显示全部楼层   广东省汕头市
糖心疼 发表于 2021-9-26 19:31
老铁。多做点项目。实践就知道了。web应用。功能是次要。首要的目标是可以同时接受多少客户。如 ...

虽然我不是做B/S架构的,我做的是C/S架构,但好像也差不多。
客户会开多线程,但服务器工作在固定 CPU核心数*2 的线程数量,这意味着服务器可以跑满CPU,占用内存也不会太高。
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2021-9-26 19:47:51 | 显示全部楼层   广东省汕头市
糖心疼 发表于 2021-9-26 19:39
HP的事件触发是 固定尺寸大小。多次触发body事件。 所以 如果内存不做二次组包。根本就不可能接 ...

TCP异步粘包处理
https://bbs.125.la/forum.php?mod=viewthread&tid=14617223
这个永远只缓冲最后一个不完整的包
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表