zhongjia 发表于 2006-3-22 11:00:38

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

不好意思,最近常去下载一些源代码,缺了一点钱,瞎写些东西赚一点自己用。



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 是关键   插件 尽量少加我已经深受其害了

knhgcn 发表于 2006-3-22 13:25:43

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

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

cityhonghu 发表于 2006-3-22 14:22:06

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

:cry::sweet_kis:super::d::confused::sweet_kis:D

cityhonghu 发表于 2006-3-22 14:23:32

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

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

:cold::cold::cold:

saiterlz 发表于 2006-3-22 14:27:04

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

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

ldw710430 发表于 2006-3-22 14:50:24

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

呵呵,看一下怎么回事

zwfgdlc 发表于 2006-3-22 14:52:03

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

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

niu 发表于 2006-3-22 14:54:03

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

拿出来分享啊 你那个堆栈

dantes001 发表于 2006-3-22 14:54:08

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

:):):):)
页: [1] 2 3
查看完整版本: cs服务器无端自动弹人原因分析