4889软件园:电脑手机软件下载大全,热门手机游戏免费下载

4889软件园 > 资讯文章 > 穿越火线丢失tpsvcexe(各类黑科技统统上线!全境封锁2官方反外挂介绍)

穿越火线丢失tpsvcexe(各类黑科技统统上线!全境封锁2官方反外挂介绍)

作者:佚名 来源:4889软件园 时间:2023-01-24 08:33:17

穿越火线丢失tpsvcexe(各类黑科技统统上线!全境封锁2官方反外挂介绍)

穿越火线丢失tpsvcexe文章列表:

穿越火线丢失tpsvcexe(各类黑科技统统上线!全境封锁2官方反外挂介绍)

各类黑科技统统上线!全境封锁2官方反外挂介绍

育碧的多人在线TPS新作《全境封锁2》即将于3月15日在全平台解锁,各位特工们已经全境封锁》官方微博就为各位特工带来了《全境封锁》最新的反外挂介绍,快一起去看看有什么黑科技吧!

《全境封锁2》官方反外挂介绍:《全境封锁2》官方微博反外挂介绍—游戏—视频高清在线观看-优酷

这次的反外挂视频主要介绍了这几个方面:

专项专用服务器

《全境封锁2》中的大量程序都基于专项服务器,玩家很难使用外挂,服务器会阻挡掉试图越过防护修改数据的外挂程序。

服务器覆盖

《全境封锁2》在服务器覆盖上投入了双倍的努力,现在游戏的数据中心已经散落在全世界的13个主要区域。

云服务器

新的云服务器也投入使用,确保玩家们的游戏体验,减少玩家派对拥堵。

全新防篡改机制

《全境封锁2》使用“Easy anti-cheat”反外挂系统,防止玩家篡改游戏数据和客户端,并且加入了改良的封号机制,一旦确认,立刻追踪封号。

虽然说黄金版和终极版的特工们已经提前进入游戏了,但是《全境封锁2》的掉线问题也是让玩家们头疼不已,甚至有人戏称其为“全境掉线2”,希望官方在解决外挂问题的同时,也将掉线问题抓紧进行修复。

现在《全境封锁2》已经上架3DM商城,标准版售价258元,欢迎来三大妈这里购买!

3DM商城购买地址:uplay正版中文 全境封锁2 Tom Clancy's The Division 2 激活码-淘宝网

体现厂商诚意的时候到了!细数那些发售失利的PC游戏

不管是游戏厂商还是玩家,都非常期待游戏上市发售的这一天,但在这一天却可能发生一些变数。MMO游戏可能会出现服务器故障;在线验证可能会导致服务器拥堵;游戏出现bug或优化不足的问题也可能会出现;有些厂商为了在预定日期发售,可能会在游戏尚未完成的情况下发售。

当我们玩上一款新游戏时,肯定是非常兴奋的,但如果在这时经历上述情况的话,一定会非常失望。尽管一些厂商会及时采取补救措施,但还有一些游戏在很长一段时间内收到很大影响。今天就让我们盘点一下那些发售失败的PC游戏。

《仙剑奇侠传6》 上市日期:2015年7月8日

《仙剑奇侠传6》于2015年7月8日正式上市,但许多已经购买正版游戏的玩家却碰到了不能激活游戏的现象,这不禁让人非常失望,不知如何是好。我们可能设想过许多情况,但万万没想到会在游戏激活这一步出现状况。此后虽然有玩家顺利进入游戏,但游戏的操作感、战斗系统、优化程度以及画质等等,都受到了玩家的吐槽。

面对吐槽,官方甚至还扬言要通过法律途径维护权益,这不禁又引起大量玩家的不满,而之后的道歉也是让人感觉无关痛痒。小编在此想说一句,亡羊补牢犹未晚矣,希望厂商能够尽快解决问题,让广大玩家享受到《仙剑奇侠传6》带来的真正乐趣,不要辜负玩家们的一片情怀!

更多相关资讯请关注:仙剑奇侠传6专题

更多相关讨论请前往:仙剑奇侠传6论坛

《蝙蝠侠:阿甘骑士》(Batman: Arkham Knight) 上市日期:2015年6月23日

前段时间闹得沸沸扬扬的还有华纳旗下ACT大作《蝙蝠侠:阿甘骑士》,由于前作的好评,这部新作吸引了许多玩家的关注。但经过近一年的漫长跳票之后,PC玩家却等来了一个难以接受的现实:游戏优化太差,导致绝大多数PC玩家给差评!官方迅速作出反应,决定停售并修复游戏,结果是PC玩家还要等到今年秋季才有可能享受到《蝙蝠侠:阿甘骑士》的真正魅力。作为游戏大厂,这样的事情发生实在是太伤PC玩家们的心了。

更多相关资讯请关注:蝙蝠侠:阿甘骑士专题

更多相关讨论请前往:蝙蝠侠:阿甘骑士论坛

《刺客信条:大革命》(Assassin's Creed: Unity) 上市日期:2014年11月11日

NPC的脸都不见了,帧率简直不能忍,各种bug层出不穷,以至于游戏一上市玩家们便怒封其为“BUG信条”!这次发售简直就是一场灾难,以至于育碧取消了游戏的季票,并在Uplay上为购买《刺客信条:大革命》DLC的玩家赠送一款免费游戏。这看上去是一个很好的解决办法,但接受这个方案意味着你永远不能在因为《刺客信条:大革命》来起诉育碧。

更多相关资讯请关注:刺客信条:大革命专题

更多相关讨论请前往:刺客信条:大革命论坛

《新剑侠传奇》 上市日期:2014年7月18日

又一部国产单机游戏,《新剑侠传奇》在发售前一样受到很多玩家的期待,游戏在7月18日上市后一度达到20万的销量。但随之而来的就是玩家们的各种吐槽和抱怨,因为各种BUG,还有画质、优化问题,甚至让玩家有一种上当受骗的感觉,虽然官方发布新补丁来修正游戏,但也无济于事。在游戏上市不到一周,官方宣布游戏停止销售,延期两周,回炉重制。

更多相关资讯请关注:新剑侠传奇专题

更多相关讨论请前往:新剑侠传奇论坛

《战地4》(Battlefield 4) 上市日期:2013年10月29日

DICE这部多人为主的FPS游戏在发售当日出现了许多问题,比如掉线问题、随机崩溃和卡死问题、硬生生让子弹打偏的代码失效问题等等,甚至还有一款狙击枪消音器将整个服务器中的声音都消没了,简直太搞笑。

官方也迅速作出反应,在接下来的几周之内发布了一系列补丁,但似乎更多的BUG出现了,比如有些被击中但并没有死亡的玩家竟然被莫名其妙地弹开了,包括这种的许多问题在《战地4》发售后的很长时间都没有全部解决,最终DICE只能通过部署更多更强大的新服务器来解决64人同场对战的潜在问题,还提供了长达一整周的双倍经验活动来回馈玩家。

《罗马2:全面战争》(Total War: Rome 2) 上市日期:2013年9月3日

尽管许多玩家对《罗马2:全面战争》的策略和场景都很满意,但仍有玩家在游戏发售时遇到了各种BUG。有玩家就反映了游戏AI问题、频繁崩溃问题、恶心的纹理优化,还有渣优化问题,哪怕是高出推荐配置要求的PC都很难完美运行这部游戏,甚至还有一些玩家和评测者发现他们根本不能运行游戏。

官方给出的回应很常规:道歉和补丁,但在全战游戏论坛中,一位据说是开发者的匿名发帖者爆料,这一切问题出现的原因竟然是游戏缺少发售前测试。

更多相关资讯请关注:罗马2:全面战争专题

更多相关讨论请前往:罗马2:全面战争论坛

《模拟城市5》(SimCity) 上市日期:2013年3月5日

有很长一段时间,很多粉丝都对Maxis制作的这部城市模拟游戏不能离线游戏而耿耿于怀,而且《模拟城市5》的多人模式实际上还不能直接与其他玩家联机。

当然,这在发售日问题中根本不值一提,但这部游戏几乎是不能玩的!而且在游戏发售之后一周之内一直是这样。后来EA废除了一些游戏功能后,玩家才能正常联机游戏,但更多问题来了:城市大小被严格限制、市民的AI并没有期待的那样高。

这还不算完,在表示离线模式不可能实现的几个月之后,EA又增加在游戏中增加了这一模式,真不知道这家公司在想什么。但话说回来,不管制作方犯了多少错误,《模拟城市5》还是卖出了超过200万套。

更多相关资讯请关注:模拟城市5专题

更多相关讨论请前往:模拟城市5论坛

《上古世纪》(ArcheAge) 上市日期(美服):2013年1月15日

除了像服务器堵塞这样对于MMO游戏而言非常正常的问题之外,《上古世纪》的玩家们在游戏正式上市那天却发现了另一个问题。服务器就那么几台,而且每台服务器仅有一定限额的可获取土地,因此在游戏刚刚上市的几小时之内所有土地都被一抢而空。新玩家如果想要获得土地只能向其他玩家购买,或者从破产的所有者手中获取,而这第二种方法几乎是不可能的。

此外,《上古世纪》刚上市时非常容易遭受攻击,黑客们利用BOT和第三方程序几乎要把游戏搞死;自动化程序让作弊者能够几乎瞬间获得可用的土地。最后,游戏开发商Trion禁掉了许多账号,但对有些玩家来说,损失已经很大了。

《僵尸战争》(The War Z) 上市日期:2012年10月15日

《僵尸战争》犯了什么错?很多!那是谁的责任呢?你们的!

《僵尸战争》是Steam页面中有这样的描述性文字:“私服”、“玩家技能”和“400km地图”,根据游戏开发商的说法,玩家根据这些描述来购买游戏就是犯傻,而且在购买之后抱怨这些更让人觉得你是傻X。大量的玩家被封禁,有一些甚至没有任何原因和解释,游戏论坛中的抱怨性语句都被删除。最后《僵尸战争》由于虚假宣传而被Steam下架。而到了2013年,《僵尸战争》改头换面更名为《感染:求生之旅(Infestation: Survivor Stories)》再次出现,但还是新瓶装旧酒,那些老毛病依然存在。

《暗黑破坏神3》(Diablo 3) 上市日期:2012年5月15日

当年想要在上市时玩到《暗黑破坏神3》的玩家一定不会忘记这个错误代码:“Error 37”!那天出现这个错误代码的频率简直是太高了,而对于那些等待十年的玩家,出现这种情况简直是不可饶恕的!这么长时间的急切等待,换来的就是一个Error 37?

不仅如此,《暗黑3》还是一部连单人模式也要求网络连接的游戏,还是一款排好几天队也进不了服务器的游戏。甚至在移除了备受争议的拍卖行后,玩家还是不能离线游戏。

更多相关资讯请关注:暗黑破坏神3专题

更多相关讨论请前往:暗黑破坏神3论坛

《死亡岛》(Dead Island) 上市日期:2011年9月6日

游戏开发商一定会绞尽脑汁让自己的游戏在发售日大放异彩,《死亡岛》的开发商也是如此。但Techland那天却把《死亡岛》的发售版本弄错了,出现在商店和玩家手中的竟然是一款充满bug和未优化的开发版游戏,玩家们甚至可以开启作弊选项,在游戏中可以穿墙和无敌。但Techland很快发现问题并及时补救,通过首日补丁修复了包括存档、画质问题在内的多项错误。

《最终幻想14》(Final Fantasy 14) 上市日期:2010年9月22日

一部游戏能发展到第14代已经是非常了不起了,玩家们一定会期待一个很棒的发售。但SE却没那么好命,在Beta测试期限被缩短之后,在《最终幻想14》上市时官方显然忽略了游戏并没有准备好这个事实,于是玩家在游戏发售那天碰到了各种崩溃现象。好不容易进入游戏之后,却又被那丑陋的UI、糟糕的帧率以及频繁的延迟吓了一大跳。

虽然官方后续发布了一系列补丁,但这并不能拯救一部采用这样糟糕设计的游戏。最终制作方用新引擎将FF14回炉重制,更换了服务器系统等内容,并在次年重新上市。

更多相关资讯请关注:最终幻想14专题

更多相关讨论请前往:最终幻想14论坛

《全面通缉》(APB) 上市日期:2010年6月26日

《全面通缉》是《侠盗猎车手》系列创始人David Jones制作的一款TPS网游,号称网络版GTA。听上去这款MMO一定会在发售日大放异彩,但在2010年6月26日玩家们来到个游戏世界时,感受到的却是完全的失望。《APB》的射击机制给人的感觉就像是好几年前的,整个城市给人的感觉就像洗碗水一样食之无味。

《APB》的开发耗资高达1亿美元,在游戏上市仅三个月之后服务器就停运,而游戏开发商RealTime Worlds也宣布倒闭。《APB》在2011年获得重生,现在是一部免费游戏。

《天行者:英雄史诗》(Vanguard: Saga of Heroes) 上市日期:2007年1月26日

对于一部MMO来说,服务器没准备好是很正常的事,但游戏本身没准备好那就是另一回事了。《天行者:英雄史诗》在发售时一切都已经准备就绪,但游戏却还没准备好。这部游戏在发售之前已经艰难开发了数年,但索尼在线娱乐(SOE)却在游戏还未完全开发完毕时就将其扫地出门了。

热切期盼的玩家发现自己需要应付许多BUG,其中甚至有让玩家完全放弃现有角色而重新创建角色的问题。《天行者:英雄史诗》的优化问题也可想而知,开发者们耗费数年来试图修补游戏,但最终在2014年7月,索尼彻底关闭了这部游戏的运营。

《魔兽世界》(World of Warcraft) 上市日期:2004年11月23日

在2004年,暴雪公司的500人和40台服务器整装待发,准备为他们的奇幻MMORPG《魔兽世界》打造一个漂亮顺利的发售活动。但问题还是出现了,暴雪完全低估了玩家们的热情,这些服务器远远不能承受这样的负担。

玩家们被迫加入上千人的排队大军才有可能进服务器,这还不算什么,玩家还经常会被挤出来,因此又要从长长的队尾开始排起,这简直就是噩梦啊!暴雪也意识到了问题的严重性,迅速加倍服务器数量,但仍无济于事,最后暴雪甚至叫停了实体版游戏的发售。

很显然,《魔兽世界》太热门了,但暴雪似乎并没有吃一堑长一智,在2014年最新资料片“德拉诺之王”发售时,依然出现了服务器排队时间过长和服务器超时等问题。但是谁让WOW这么火呢。

《半条命2》(Half-Life 2) 上市日期:2004年11月16日

在Steam还没有成为游戏市场一方霸主之前,它仅仅是Valve用来向玩家及时提供游戏更新的工具,而当有史以来最受期待的PC游戏之一《半条命2》上市时,Steam却成为了一项强制性服务。

经过数年跳票的煎熬等待,玩家们早已饥渴难耐,Valve的服务器很显然受不了那么多玩家的涌入,而当玩家发现自己购买的实体版游戏不能玩时,那种成千上万只草泥马奔过的心情可想而知。因为哪怕是实体版游戏也需要通过Steam在线验证!

有些玩家很“幸运”地进入了游戏,却碰到了一系列令人不爽的性能问题,导致断断续续的掉帧和声音卡顿的现象,Valve也花费了数月来修正这些问题。

《混乱在线版》(Anarchy Online) 上市日期:2001年6月27日

有些时候,容易出错的地方还真就出错了,这里令人印象最深刻的就是2001年上市的《混乱在线版》。当游戏发售时,有些收到光盘的玩家发现游戏自带的激活码不可用(原来仙剑6不是第一个),而有些玩家却在注册时支付了双倍的费用。游戏经常崩溃,服务器也很容易宕机,而当玩家好不容易进入游戏后,却发现游戏世界中还有许多不能进入的地区。可想而知,游戏开发商Funcom的客服要崩溃了。

然而,糟糕的开头并不代表会有一个糟糕的结束。Funcom花费了数月时间来修正《混乱在线版》的问题,并且提供免费试玩来让玩家回归。值得一提的是,这款科幻MMO目前仍在运营,而且是一部免费游戏。

#PUBG 谈谈BattlEye封禁,误封如何处理呢?

大家好,今天我来给大家讲讲BE封号工作原理。

首先大家要树立一个概念,什么是反作弊系统。他的工作原理是什么。而外挂又是什么。这点理解起来并不难。下面先给大家介绍外挂

外挂-非法插件。顾名思义是用来作弊的软件或者非法代码。它通过拦截并修改玩家与服务器间的数据传输来实现作弊功能。

外挂将玩家-服务器-玩家的C/S服务结构改成了玩家-外挂服务器-服务器-外挂服务器-玩家。所以这里提到了外挂服务器的概念。

因此,外挂是分种类的.(敲黑板)一般单机游戏的修改器都是对本地文件做内存修改来实现作弊功能。因为单机游戏的数据处理都在自己的电脑内执行。而联网的多人游戏则拥有云端服务器。可是,某些插件修改本地文件仍然可以实现作弊行为。这是因为对于多人TPS/FPS游戏来说。在云端计算每一个玩家的伤害之类的数据的话,无疑会对服务器造成严重负担。所以,游戏就讲弹道轨迹/玩家物资数据等处理工作交给了玩家的PC。

因此,现在常见的只有拥有服务器的外挂以及无后坐插件之类的非法程序出售。

BattlEye反作弊系统。也就是PUBG使用的反作弊系统,是目前国外最强的反作弊系统。(我没开玩笑),为啥说国外呢?国内有TX游戏安全中心

BE Battleye之所以比较菜是因为他采取的是主动防御的套路,而且他不只是扫描内存,还会扫描你的整个硬盘,这个在国外都有争议。因为在欧洲,这种行为不可能被允许。

而主动防御有一种弊端,它可能会屏蔽非外挂进程。这也就是误封的来源。

而BE做出的封禁都不会是VAC的封禁,它只影响这一款游戏。它的小黄信都是显示你被游戏开发者封禁或者PUBG在Battleye中将你封禁。

VAC介绍,VAC(Valve Anti Cheat)是Valve旗下的反作弊系统。也是目前好评度最高的反作弊系统。为啥咧,因为不存在误伤。误伤了也可以申诉。而且只要你是清白的,VAC误封申诉的成功率接近100%

而PUBG不使用VAC系统,因此,你不会因为PUBG而受到VAC封禁。VAC封禁只是对在Valve安全服务器上运行的游戏起作用。所以,即使你的账户上存在VAC封禁,你仍然可以登陆PUBG进行游戏,只要你没有收到蓝洞对你的账户作出的处罚。

相对于主动防御的BE而言,VAC就是使用启发式被动检测,它是监控软件的Hush值。一旦不匹配,便会检测你电脑上的正在运行的代码。生成一份报告并标记你的账户。然后,将代码与已知代码库进行比对。一旦有匹配数值,便会启动VAC封禁。当然,这个过程只发生在几分钟之内。

案例分享:巧用各种工具提升无源码系统的性能和稳定性

杨振,宜信工程师,前微博feed组工程师,对源码学习感兴趣

董建,宜信工程师,前微博工程师,关注大数据和高可用技术


背景:

公司最近新上线一个系统,主要架构如下:

测试环境系统部署后,出现了两个问题:

1. loadrunner压测tps上不去,压测java接口tps 单机只能到100多tps就上不去了,耗时从单次访问的100ms上升到110并发时的1s左右。

2.压测期间C服务器1 经常不定时挂掉。

因为某些原因,该项目C相关程序没有源码,只有安装部署文件,为了解决上述两个问题,我们几个同事和重庆同事一块参与问题排查和解决。因为没有源码,中间经历了层层波折,经过一个月努力,终于解决了上述两个问题,整个排查过程学到了很多知识。

用到的分析工具:

1.tcpdump,

2.wireshark,

3.gdb,

4.010 editor,

5.火焰图,

6.ida,

7.数据库抓sql耗时语句,

8.oracle ash报告,

9.loadrunner

几句话总结:

1. C程序客户端socket长连接调用C服务端存在性能瓶颈,通过tcpdump,wireshark 二进制分析出传输协议后改用java调用C服务端,单机tps提升1倍,性能提升3倍

2. 数据库语句存在for update 语句导致并发上不去,经过分析从业务上采用sequence 替换for update语句,并通过010 editor直接修改二进制 修改for update 语句相关逻辑为sequence ,系统具备了扩容服务器tps也能同步提升的能力

3. 数据库insert语句并发情况下存在瓶颈,扩大oracle redo log日志大小解决,继续提升tps40%。

4. 程序进程随机挂掉,通过gdb分析core dump文件,定位到在并发情况下程序中使用的gethostbyname有问题,采用临时方法解决。

分析过程:

1.第一次瓶颈定位

刚开始排查问题时,loadrunner压测java接口,并发用户从0逐渐增加到110个的情况下,tps到100左右就不再提升,响应耗时从100ms增大到1s。此时我们的分析重点是谁是当前的主要瓶颈

再看一遍架构图, 图中5个节点都有可能是瓶颈点,数据库此时我们通过数据库dba管理权限抓取耗时sql,没抓取到,先排除数据库问题,java的我们打印分步耗时日志,定位到jni调用 c客户端耗时占比最大。这时瓶颈点初步定位到C客户端,C服务端1,C服务端2 这三个节点。

因为没有源码,我们采用tcpdump抓包分析,在C服务器1上

tcpdump -i eth0 -s 0 -w aa.txt host java客户端ip

抓出的包用wireshark分析

通过追踪流-TCP流 分析服务端耗时并没有变的太大,因为C客户端和C服务端是长连接,多个请求可能会共用一个连接,所以此时分析出的数据可能会不太准,因此我们采用loadrunner压测,其它条件不变,一台C服务器1和两台C服务器1分别查看耗时变化,

其它条件不变,一台java服务器和两台java服务器分别查看耗时变化.

最终定位到是C客户端的问题。(ps:在wireshark的分析数据时还跟秦迪大师弄明白了tcp延迟确认)

2.改造C客户端

C客户端和C服务端是通过长连接通信的,直接改造C代码难度较大,所有我们准备把C替换成java,这就需要分析C之间通信传参时候用的什么协议,然后根据这个协议用java重写。我们根据之前的经验推测出了编码协议,用wireshark分析二进制确认确实是这种编码。

我们根据这种协议编码采用java重写后,同样在110并发用户情况下,tps提升到了210(提升两倍),耗时降到了330ms(是原来的三分之一)

3.第二次瓶颈定位。

经过第二步优化后tps提升了两倍,但是此时扩容tomcat,扩容C服务器,tps就维持在210左右,不会变高了。因此我们继续进行定位新的瓶颈点。此时找dba要到一个实时查看oracle 耗时sql的语句

select

(select b.SQL_TEXT from v$sqlarea b where b.SQL_ID=a.SQL_ID ) sqltxt,

(select c.SQL_FULLTEXT from v$sqlarea c where c.SQL_ID=a.SQL_ID ) sqlfulltxt,

a.username, a.LAST_CALL_ET,a.MACHINE ,a.command, a.EVENT, a.SQL_ID ,a.SID,a.SERIAL#,

'alter system kill session ''' || a.SID ||','||a.SERIAL# ||''';' as killstment

from v$session a

where a.STATUS = 'ACTIVE'

and a.USERNAME not in ('SYS', 'SYSTEM')

order by

a.LAST_CALL_ET desc ,a.username,a.MACHINE ,a.command, a.EVENT, a.SQL_ID ,a.SID;

发现有个for update的sql 并发量大的时候部分请求 LAST_CALL_ET列的值能达到6秒,for update导致了所有请求被串行执行,影响了并发能力。我们经过分析业务逻辑后,用sequence暂时替换 for update 语句,但是我们没有源码,没法修改,后来又通过010 editor 直接修改二进制文件,通过010 editor 查询找到了 for update 语句,顺利替换。

替换后,4台C服务器tps达到了580,提升了2.7倍(580/210),系统初步具备了横向扩展能力

4.第三次瓶颈定位。

经过上一步改造,4台C服务器时系统的tps提升了2.7倍,但是并没有提升到4倍(210*4=840),没有线性提升,说明还是有别的瓶颈,又通过dba上边给的sql发现insert 语句偶尔耗时也很长,在1s左右,EVENT等待事件是IO事件,DBA同事给修改了redo log file 大小(这个是测试环境Oracle,之前没有优化),从默认的50M,修改为1G, tps 提升到了640 (还没提升到4倍,也就是说还有瓶颈,可能还是数据库,但因为数据库暂时没办法抓取到毫秒级的耗时sql,没再继续追查)

经过这几次性能提升,加上我们测试服务器配置都不高,如果线上服务器性能预估能达到1000tps,基本满足眼前需求,因此就没再继续进行性能优化。

5.程序进程随机挂掉问题。

压测过程中,C服务器进程经常随机挂掉,通过tail -f /var/log/messages 发现生成了core dump 文件,但是又被系统自动删除了。董建查到了开启core dupm文件的方法,如下:

a、ulimit -c

查看是否为0,如果为0,表示coredump文件设置为0,需要修改为不限制

ulimit -c unlimited

b、修改/etc/abrt/abrt-action-save-package-data.conf

ProcessUnpackaged = yes

修改后进程又崩溃时core dump 文件生成了,进入core dump 目录进行调试

gdb 脚本路径 coredump

bt 显示堆栈信息

继续执行如下命令

f 0

set print pretty on

info local //显示当前函数中的局部变量信息。

通过p命令查看里边变量的值

发现变量thishost->h_addr_list的值为

我们分析可能是并发请求时有方法不是线程安全的导致这个值为,从而引起了进程crash,继续调试。

在gdb中 set logging on 把调试信息输出到文件

thread apply all bt 输出所有的线程信息。

退出gdb

grep --color -i clientconnect -C5 gdb.txt

确实有两个线程并发在访问

通过ida工具反编译so,最终定位到以下语句在并发时有问题,thishost中的变量可能会被另一个线程在一瞬间初始化为。

thishost = gethostbyname((const char *)hostname);

ip = inet_ntoa(*(struct in_addr *)*thishost->h_addr_list);

根据我们的项目特点,因为我们没有远程调用,C服务端1和C服务端2都部署在了同一台服务器上,所以我们通过修改二进制把地址暂时写死成了127.0.0.1,把ip = inet_ntoa(*(struct in_addr *)*thishost->h_addr_list);修改成了空指令,重新部署后没再出现系统崩溃的问题。

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。

2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上去了......

凌晨2点37分,阿里云官方回应称:华北2地域可用区C部分ECS服务器等实例出现IO HANG,经紧急排查处理后逐步恢复,此外将根据协议尽快赔偿。并已经全面排查其他地域及可用区,未发现此类情况。

IO HANG

那么问题来了,IO HANG是个什么鬼?简单的说,就是服务器磁盘读写过慢,导致线程和进程挂起。大量读写线程/进程挂起导致服务器宕机......

阿里云有大量的类似RDS、HybridDB数据库,支持海量数据在线事务(OLTP)和在线分析(OLAP),需要大量的IO读写,而Linux的IO性能将直接影响SQL的执行速度,严重情况下将导致服务器卡死和宕机。

如何监控自己服务器的IO情况呢?本文将带大家详细了解这些常用的命令。

如何监控自己服务器的IO情况?

常用的命令包括:top,iostat和iotop。那么他们都有什么区别,以及如何使用呢?我们一一分解。

我本机安装的是CentOS-7的虚拟机,内核信息为:

top命令

top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最"敏感"的任务列表,该命令可以按CPU使用、内存使用和执行时间对任务进行排序,而且该命令的很多特性都可以通过交互式命令。

在Linux下,输入`top` :

Tasks、Cpus、Mem和Swap分别代表了进程信息、CPU信息和内存信息。各个列表示的指标意义如下 :

PID进程id

USER进程所有者用户名

PR 优先级

NI nice值

VIRT进程使用的虚拟内存总量

RES进程使用的未被换出的物理内存大小

SHR共享内存大小

S 进程状态S=睡眠T=跟踪R=运行Z=僵尸进程D=不可中断的睡眠进程

CPUcpu时间统计

MEM 物理内存占比

COMMAND命令行命令名

top常用的交互式命令使用格式:

top [-] [d] [p] [q] [c] [C] [S] [s] [n]

参数说明:

d:指定每两次屏幕信息刷新之间的时间间隔,当然用户可以使用s交互命令来改变之;

p:通过指定监控进程ID来仅仅监控某个进程的状态;

q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行;

S:指定累计模式;

s:使top命令在安全模式中运行,这将去除交互命令所带来的潜在危险;

i:使top不显示任何闲置或者僵死进程;

c:显示整个命令行而不只是显示命令名。

通过top命令,我们即可查到当前服务器的进程占用CPU和内存情况。

iostat命令

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

基本使用:

$iostat -d -k 2

参数说明:

-d:显示设备(磁盘)使用状态;

-k:某些使用block为单位的列强制使用Kilobytes为单位;

2:数据显示每隔2秒刷新一次。

如果提示没有iostat命令需要使用yum安装,安装命令如下:

`yum install sysstat`

参数解释如下:

tps:该设备每秒的传输次数,一次传输意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”;

kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量,这些单位都为Kilobytes。

上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时瞬时统计的磁盘总TPS是1.88,下面是各个分区的TPS(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)。

在实际业务中,我们经常使用的命令是:

iostat -xdm

例如:iostat -xdm 2,2代表2秒钟刷新一次。

我们可以看到,%util这个参数即代表磁盘繁忙程度。100%表示磁盘繁忙, 0%表示磁盘空闲。但是我们需要注意,磁盘繁忙程度并不意味着磁盘读写速度大小。

iostat是系统级别的监控指令,iostat给我们的展示结果揭示了我们当前服务器磁盘的繁忙程度,虽然有一定的指导意义,但是不能精确到进程级别,这时候我们就需要iotop了。

iotop命令

我们上文讲到top命令,顾名思义,iotop代表io版本的top命令,使用起来简单粗暴,直接在命令行敲下:iotop。

iotop命令可以按进程统计IO状况,我们可以指导当前系统哪些进程在占用IO,百分比是多少,占用IO的进程是在读,还是在写,读写量是多少等信息。然后我们可以定位到具体的进程,查看进程详情。

同样个iotop命令有一个很像的命令叫做pidstat,参数很多。

例如:`pidstat -d` :

我们同样可以看到每个进程的读写情况,然后定位到具体的线程去查看问题。

总结

在生产实践中,实时监控我们的服务器IO情况至关重要,尤其是数据库所在的服务器,它直接关系到我们的程序的读写速度、SQL的执行情况等。

服务器IO的情况是我们选择服务器的重要考虑因素之一。IO变差,轻则写入服务读写响应缓慢,重则导致大量进程长时间挂起,数据库拥堵卡死,服务器严重卡顿,甚至宕机。

作者:王知无,阿里巴巴高级大数据开发工程师,先后在京东,阿里等大型互联网公司从事大数据平台、实时计算和离线计算中间件和业务平台开发。自媒体人,业余讲师,希望为更多的互联网开发人员提供最新和最热的大数据方向的技术动态,技术前沿研究。