搜索
查看: 10558|回复: 28

cs服务器无端自动弹人原因分析

[复制链接]
发表于 2006-3-22 11:00:38 | 显示全部楼层 |阅读模式 来自 中国–海南–海口
不好意思,最近常去下载一些源代码,缺了一点钱,瞎写些东西赚一点自己用。



cs服务器自动弹人的现象主要是出现在安装有AMXX/AMX环境的服务器上,尤其是运行了许多大型插件的服务器,例如:魔兽、岗哨、飞行器、火箭筒等娱乐性插件。

前段时间我自己写的amxx反作弊娱乐插件,运行该插件总是出现cs崩溃、自动弹人等现象,分析了一下amxx脚本的内存机制,发现amxx采用的就是java的内存管理机制,程序员只管申请,不管释放,释放由系统一个潜在线程自动回收,这个问题就来了,像java编写一些实时交互性很强的软件时,都要自己编写内存堆栈进行优化,否则程序效率会很低下。而cs这种高对抗性、高交互性的游戏,其要求更加严格。当服务器繁忙的时候,回收线程来不及工作,造成系统资源紧张,很容易就出现弹人、崩溃等种种不可预料的情况。
举一个极端的例子:amxx的枪击事件里面,这可以说是最频繁调用的事件之一了,如果在这个事件里面申请了大量的局部变量,系统的稳定性马上会变得很差。我本来想实现,枪击队友被扣钱,一点生命值扣100,没钱扣的时候被判友军伤害进行惩罚,但是在中家娱乐插件里面惩罚的函数太大了,在枪击事件里面一频繁调用,马上分不到内存了。

解决方案:
1、服务器CPU性能是关键,高主频CPU会有充裕的能力保证回收线程的及时运行
2、允许的情况下,调高HLDS.EXE进程的优先级,这样也尽可能争取保证回收线程的及时运行
3、像我这种情况,服务器一般,负担有很重,cs服务只是业余运行,绝对不能影响服务器其他主业务的运行,HLDS.EXE的进程只能调到最低,又一定要运行我写的娱乐反作弊插件,就只能采用java那样的优化插件了,自己构建内存堆栈,自己申请、自己释放。
发表于 2006-3-22 12:10:42 | 显示全部楼层 来自 中国–江苏–宿迁

回复: cs服务器无端自动弹人原因分析

也是哦 CPU 是关键     插件 尽量少加  我已经深受其害了
回复

使用道具 举报

发表于 2006-3-22 13:25:43 | 显示全部楼层 来自 中国–广东–深圳

回复: cs服务器无端自动弹人原因分析

楼上的点名中心!楼主能不能不卖钱,好东西应要大家分享(你也不穷啊)
回复

使用道具 举报

发表于 2006-3-22 14:22:06 | 显示全部楼层 来自 日本

回复: cs服务器无端自动弹人原因分析

:cry:  :sweet_kis  :super:  :d:  :confused:  :sweet_kis  :D
回复

使用道具 举报

发表于 2006-3-22 14:23:32 | 显示全部楼层 来自 日本

回复: cs服务器无端自动弹人原因分析

隐藏帖
此帖为金钱出售帖,价格: 10点 [点击这里购买] [看谁购买]

:cold:  :cold:  :cold:
回复

使用道具 举报

发表于 2006-3-22 14:27:04 | 显示全部楼层 来自 中国–甘肃–兰州

回复: cs服务器无端自动弹人原因分析

有钱才可以喔!没钱的自己去总结吧~:sweat:
回复

使用道具 举报

发表于 2006-3-22 14:50:24 | 显示全部楼层 来自 中国–浙江–台州

回复: cs服务器无端自动弹人原因分析

呵呵,看一下怎么回事
回复

使用道具 举报

发表于 2006-3-22 14:52:03 | 显示全部楼层 来自 中国–广东–惠州

回复: cs服务器无端自动弹人原因分析

好象是1.6的通病,1.5的没有这样的问题
回复

使用道具 举报

发表于 2006-3-22 14:54:03 | 显示全部楼层 来自 中国–辽宁–抚顺

回复: cs服务器无端自动弹人原因分析

拿出来分享啊 你那个堆栈
回复

使用道具 举报

发表于 2006-3-22 14:54:08 | 显示全部楼层 来自 中国–江苏–无锡

回复: cs服务器无端自动弹人原因分析

:)  :)  :)  :)
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

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