范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

基于Kong和Kubernetes的WebApi多版本解决方案

  一:背景1. 讲故事
  去年阿里聚石塔上的所有isv短信通道全部对接阿里通信,我们就做了对接改造,使用阿里提供的.net sdk。
  网址:https://help.aliyun.com/document_detail/114480.html
  同事当时使用的是ons-.net v1.1.3版本,程序上线后若干天就会有一次程序崩溃现象,当时也没特别在意,以为是自己代码或者环境出了什么问题,索性就加了一个检测程序,如果检测到sdk程序退出就自动重启,就这样先糊弄着,直到有一天服务器告警,那个程序CPU居然飙到100%,服务器可是16核128G的哦…二:分析问题1. 抓dump文件
  情况比较紧急,马上给程序发送Ctrl+C命令让程序退出,结果又退出不了,奇葩…为了分析问题抓了一个dump下来,然后强制kill掉程序。2. 查看线程池以及各个线程正在做什么? 0:000> !tp CPU utilization: 100% Worker Thread: Total: 0 Running: 0 Idle: 0 MaxLimit: 32767 MinLimit: 16 Work Request in Queue: 0 -------------------------------------- Number of Timers: 1 -------------------------------------- Completion Port Thread:Total: 1 Free: 1 MaxFree: 32 CurrentLimit: 1 MaxLimit: 1000 MinLimit: 16
  从 CPU utilization: 100% 上看,果然cpu100%了,发现 Worker Thread 没有Running 线程,可能是因为执行了Ctrl+C都销毁了,接下来用 ~*e !clrstack 把所有的托管线程栈打出来。 0:000> ~*e !clrstack OS Thread Id: 0x1818 (0) Unable to walk the managed stack. The current thread is likely not a  managed thread. You can run !threads to get a list of managed threads in the process Failed to start stack walk: 80070057
  从输出结果看,没有任何托管线程,唯一的那个线程0还不是还托管线程,然后改成 ~*e !dumpstack把非托管线程栈找出来。 0:000> ~*e !dumpstack OS Thread Id: 0x1818 (0) Current frame: ntdll!ZwRemoveIoCompletion+0x14 Child-SP         RetAddr          Caller, Callee 000000637323ef40 00007ff8327bac2f KERNELBASE!GetQueuedCompletionStatus+0x3f, calling ntdll!ZwRemoveIoCompletion 000000637323efa0 00007ff81b9c8a00 ONSClient4CPP!metaq_juce::URL::launchInDefaultBrowser+0x273d0, calling kernel32!GetQueuedCompletionStatus 000000637323f090 00007ff81ba3eb0a ONSClient4CPP!ons::Message::getMsgBody+0x5a8a, calling ONSClient4CPP!metaq_juce::URL::launchInDefaultBrowser+0x1f100 000000637323f140 00007ff81ba3f084 ONSClient4CPP!ons::Message::getMsgBody+0x6004, calling ONSClient4CPP!ons::Message::getMsgBody+0x5800 000000637323f280 00007ff81ba233b4 ONSClient4CPP!ons::ONSFactoryProperty::setSendMsgTimeout+0xa6b4, calling ONSClient4CPP!ons::ONSFactoryProperty::setSendMsgTimeout+0xa5d0 000000637323f2b0 00007ff81ba11b43 ONSClient4CPP!ons::ONSFactoryAPI::~ONSFactoryAPI+0x153 000000637323f310 00007ff81ba12d64 ONSClient4CPP!ons::SendResultONS::operator=+0xc44, calling ONSClient4CPP!ons::ONSFactoryAPI::~ONSFactoryAPI+0x10 000000637323f460 00007ff81ba83eb4 ONSClient4CPP!ons::Message::getStoreTimestamp+0xf484, calling ONSClient4CPP!ons::Message::getStoreTimestamp+0xf1c4 000000637323f630 00007ff8356f7d94 ntdll!RtlExitUserProcess+0xb4, calling ntdll!LdrShutdownProcess 000000637323f690 00007ff832777c23 KERNELBASE!CtrlRoutine+0xa3 000000637323f780 00007ff834df8364 kernel32!BaseThreadInitThunk+0x14, calling kernel32!WriteConsoleOutputW+0x530
  从非托管调用栈来看,其中KERNELBASE!CtrlRoutine 表明主线程接受到了Ctrl+C命令, 从栈顶发现貌似不能退出的原因是主线程被 ONSClient4CPP 接管,而且这个C++正在做远程连接再等待网络IO返回,但这种会把16核cpu打满应该不太可能,这个问题貌似到这里就卡住了。三: 重启程序发现问题依旧1. 抓dump文件
  很开心的是程序重新启动后,过了两分钟CPU又在飙升,这次学乖了,等CPU到了60,70%的时候抓dump文件。2. 继续排查 0:000> .time Debug session time: Fri Apr 17 17:36:50.000 2020 (UTC + 8:00) System Uptime: 355 days 5:33:48.092 Process Uptime: 0 days 0:02:11.000   Kernel time: 0 days 0:03:31.000   User time: 0 days 0:13:22.000   0:000> !tp CPU utilization: 59% Worker Thread: Total: 3 Running: 0 Idle: 3 MaxLimit: 32767 MinLimit: 16 Work Request in Queue: 0 -------------------------------------- Number of Timers: 1 -------------------------------------- Completion Port Thread:Total: 2 Free: 2 MaxFree: 32 CurrentLimit: 2 MaxLimit: 1000 MinLimit: 16
  从上面代码可以看到,进程启动了2分11秒,这次cpu利用率是59%,抓的有点早,不过没关系,先看一下Threads情况。 0:000> !threads ThreadCount:      25 UnstartedThread:  0 BackgroundThread: 8 PendingThread:    0 DeadThread:       16 Hosted Runtime:   no                                                                                                         Lock          ID OSID ThreadOBJ           State GC Mode     GC Alloc Context                  Domain           Count Apt Exception    0    1  cdc 0000022bb9f53220    2a020 Preemptive  0000022BBBFACCE8:0000022BBBFADFD0 0000022bb9f27dc0 1     MTA     2    2  3dc 0000022bb9f7f9f0    2b220 Preemptive  0000000000000000:0000000000000000 0000022bb9f27dc0 0     MTA (Finalizer)     3    4 296c 0000022bb9fe97b0  102a220 Preemptive  0000000000000000:0000000000000000 0000022bb9f27dc0 0     MTA (Threadpool Worker)  XXXX    5    0 0000022bb9ffc5a0  1039820 Preemptive  0000000000000000:0000000000000000 0000022bb9f27dc0 0     Ukn (Threadpool Worker)  XXXX    6    0 0000022bd43938c0  1039820 Preemptive  0000000000000000:0000000000000000 0000022bb9f27dc0 0     Ukn (Threadpool Worker)  .............................................................................  163   24 29e8 0000022bd4898650  1029220 Preemptive  0000022BBC102108:0000022BBC103FD0 0000022bb9f27dc0 0     MTA (Threadpool Worker)   164   25 2984 0000022bd489d470  1029220 Preemptive  0000022BBC0EA2D0:0000022BBC0EBFD0 0000022bb9f27dc0 0     MTA (Threadpool Worker)
  好家伙,才2分11秒,托管线程ThreadCount: 25就死了DeadThread: 16个,而且从threads列表中看,windbg给的最大编号是164,说明当前有 (164+1) - 25 =142 个非托管线程,应该就是阿里的ONSClient4CPP开启的,为什么开启这么多线程,这就是一个很值得关注的问题了,接下来还是用 ~*e !dumpstack 把所有线程的托管和非托管线程栈打出来,由于信息太多,我就截几张图。
  个人猜测,纯技术讨论:图1:
  从堆栈上看,有105个线程卡在 ntdll!ZwRemoveIoCompletion+0x14 这里,而且从 ONSClient4CPP!metaq_juce::URL::launchInDefaultBrowser+0x23072 中看,貌似阿里开了一个浏览器内核,用内核来发送数据,估计这里并发阈值开的还挺大的,咨询了下同事是前面有一家大客户发了很多的短信,估计是大量的回持积压,这个C# sdk进行了疯狂读取,这个跟CPU暴涨应该有脱不了的关系。图2:
  从检索上看有28个线程貌似正在临界区等待锁,CPU高的一个经典案例就是当很多线程在临界区等待的时候,当某一个正在临界区中的线程离开后,这28个线程的调度竞抢也是CPU高的一个原因。
  个人水平有限,进一步挖非托管堆目前还没这个技术(┬_┬) …四: 解决方案
  这种SDK的问题还能有什么解决方案,能想到的就是去官网找下可有最新版:
  可以看到最新版的 ons-.net v1.1.4 中提到的优化点:优化消息拉取流程,避免特殊情况下拉取异常造成的消息堆积。
  果然用了最新版的sdk就可以了,。

整个市场崩溃之后,埃隆马斯克表示对加密货币的支持不温不火在经历了严重的市场低迷之后,这个周末可能会加速增长,今天早上在推文中,埃隆马斯克(ElonMusk)表达了对加密货币的温和支持。特斯拉首席执行官上周转而接受新车的比特币付款被指责为周小川数字人民币设计的目的和努力的方向没有想取代美元的地位清华大学五道口金融学院名誉院长周小川澄清关于数字货币的误解,包括中国的数字货币要替代美元的储备货币地位和国际上支付货币的地位把数字货币与人民币国际化密切挂钩DECP和eCNY想取代科学家警告需对奥密克戎变异株保持警惕参考消息网4月20日报道据阿根廷布宜诺斯艾利斯经济新闻网4月18日报道,尽管全球新冠肺炎新增死亡人数正在下降,但目前导致大多数病例的奥密克戎变异毒株继续在世界范围内传播。最新确定的手机内存有救了?微信安卓版更新,可分类清理,释放大量存储空间要说手机里最迟内存的App是哪个,大部分人都会说是微信。微信中的聊天记录视频照片小程序等等内容总会在不知不觉间吃掉你的内存,用得越久占用体积越大,动不动就几十个G。使得一部分内存小2022年苹果秋季发布会新品曝光!新款iPhone太惊艳了!快来看看大家好,欢迎来到法斗科技,众所周知苹果的发布会是一年一度,可谓更新周期极快,而苹果CEO蒂姆库克从2021年开始将发布会改为一年两次,而今年春季发布会上苹果为我们带来了iPhonevivoXNote初体验,蓝厂让我刮目相看,对标三星S22UItra一点不怂看惯了千篇一律的设计,今年终于来了一款让人能够提得起兴趣的骁龙8旗舰了,它就是vivoXNote,今年蓝厂反其道行之,跳脱出6。56。7英寸屏幕,推出了一款配备7英寸顶级曲面屏的大OPPO铺路,一加飞奔4月21日,一加手机的发布会有着诸多不寻常的信息。一加新系列Ace发布,Ace这个名字很容易让我们想起曾经的OPPOAce手机发布会上,一加中国区总裁李杰宣布,一加将入驻OPPO线iPhone13再降价,感兴趣的可以关注传送直达httpsu。jd。comZKEftMf苹果iPhone13256GB,京东售价6799元,参与满4000元减600元活动25日0点叠加以旧换新满1000元享93折优惠券,目前只要1000多块钱的几款骁龙870手机,优缺点很明显(一)兄弟们,自媒体的日子越来越难过了,点个关注看再不行就点个赞,求求兄弟们给个支持骁龙870是高通目前口碑最好的几款处理器之一,有这么几款手机,降价后,性价比进一步提升RedmiK40vivos15e上架,使用猎户座1080处理器,5000万像素主摄vivos15e上架,设计很熟悉,配置也曝光了。这个手机后置摄像头看起来有点oppok10的思路,不过s15e应该是后置双摄的思路,使用三星的猎户座1080处理器,这是一款x70p电脑机箱折腾后续原本是想把里面的l铁板上的主板切掉就OK了,没想到没有想的那么简单,把原装的挡板找小区门口的师傅切掉后拿门一装,发现机箱口边还有凸起的铁皮,挡板还是装不上,而且还发现铁上的孔位不对
听京剧,咪咕提供的杜镇杰张慧芳24bit的20首唱段,那才叫享受听京剧与听歌曲乐曲一样,听高音质的录音,那才叫享受。电视剧里,常有戏匣子也就是电唱机放京剧唱片的镜头。如今,随着录音技术的发展,过去京剧大师的胶纹唱片,音质太差,不值一听。过去胶纹不让互联网公司卖菜,伤害了谁社区团购又遭重击,前途不妙。不少人拍手叫好互联网大公司,怎么能与小老百姓抢生意呢!反正现在资本也成了过街老鼠。可是,从事社区团购者送货的分拣人员,顾客们,又何尝不是小老百姓呢!为了OPPOFindX5渲染图曝光全球首发联发科天玑900012月29日,知名爆料人士OnLeaks曝光了OPPOFindX5渲染图。OPPOFindX5整机延续了上一代的ID设计语言,背部最大的变化是摄像头区域呈不规则形状,一共有三颗摄像华为加大鸿蒙欧拉投入,打造数字世界基础软件的根澎湃财讯12月31日,华为轮值董事长郭平在新年致辞中表示,加大鸿蒙欧拉投入,打造数字世界基础软件的根,为世界提供第二种选择。郭平表示,围绕欧拉打造数字基础设施的软件生态,基于鸿蒙打这两款麒麟5G手机,起售价让人心动在5G手机中,很多用户都是首选华为,否则,华为5G手机也不会超越三星成为全球第一。据了解,用户之所以选择华为5G手机,主要是因为华为在5G技术方面领先,不仅5G专利数量全球第一,还全球百亿美元芯片巨头榜出炉!华为海思绝版中国大陆再无企业上榜1月1日讯相信大家都知道,随着我国华为中兴等三百多家科技企业被列入到实体清单以后,彻底激发了国内科技企业的研发斗志,越来越多的企业巨头加入到了造芯造系统行列,毕竟只有自己掌握了核心2022年开始职场即将变天,把员工不当回事的公司或将被淘汰去年一年整个中国职场发生了很多事情,由京东起头,宣布将在三年内,将全员工资由14薪提高到16薪。虽然之前已经有其他大型公司以另外方式起了头,但无疑,京东的这次提升福利的公告,引起的用文化旅游元宇宙内生式构建思想为城市提供超级动能(系列2城市元宇宙5G文化旅游场景化智能化发展战略规划设计城市元宇宙5G文化旅游场景化智能化发展战略规划设计城市元宇宙5G文化旅游场景化智能化发展战略规划设计城市元宇宙5G文化旅游场景化智大家还记得吗,iPhone曾经有个功能,叫3DTouch苹果老用户都知道iPhone之前有个独创的功能3DTouch,通过重按屏幕,可以实现很多的功能。比如调出App和系统的菜单选项便捷的实现多任务锁屏静音等功能。但是,最近几代iPho华为在金鸡百花电影节开启手机影像生态圈的盛大春天主打手机影像的华为手机与金鸡百花电影节结盟已经走到第三年,现在的华为手机不仅升级到了双影像单元设计的影像实力更为强大的P50系列,更有了鸿蒙操作系统,此时的手机电影又会发生怎样的化电动车有辐射,不敢买?生活四大项衣食住行都和我们的生活密切相关,车辆为我们的出行带来了极大的便利,也成为生活中必不可少的交通工具。现在电动汽车也日益普及开始走进千家万户,但你是不是也在关心电动汽车有没有