排查一个死机问题,搞了好几天时间,最终确定原因:最终确定问题原因,在此分享一下: 第一步:常规根据core文件查看栈信息,gdb –c core xxxx 如下rip不正确,指令地址错乱,栈信息已破坏:在此基础上准确定位非常困难,但是仍可发现一些线索: 根据当前栈信息,大概寻找到怀疑的函数 查看整个栈上下信息,看有无怀疑的函数: 所以很有可能就是fetchNSAddrEv函数导致,需要重点关注: 更深入的细节,限于汇编不深入,比较难分析,不过可以有另外途径: 第二步:因为core是能复现出来,所…
jedis参数不当引发dubbo服务线程池耗尽异常 现象:一个dubbo服务偶发性的出现个别机器甚至整个集群大量报线程池耗尽的问题.一开始对问题的处理比较粗暴,直接增加了10倍的线程数.但是问题依然偶尔出现,重启服务就可以暂时解决.后来,发现问题出现频率有点高,不得不花点时间认真分析了. 实际原因:jedis参数设置不当.实际仔细分析问题后发现每次出现异常最开始都是出现了大量的jedis连接池获取连接异常: redis.clients.jedis.exceptions.JedisConnecti…
原文请看:select case break引发的血案 我也遇到了,浪费了一个多小时. 牢记: for { switch var1{ case "not match": go EndFor; //break 不要用 } } EndFor:…
delete [] ptr 引发了singnal 6 abort的core错误,跟踪过程发现写入ptr大量数据,引发内存越界,破坏了new数组的尾部数据保护,导致delete的时候core. 问题分析过程写了一段测试代码,发现另外一些编辑器或者说操作系统的性质,new申请的数组总是分配2的n次方的空间,比如char* ptr = new char[10]实际分配了16个字节的空间 ,char* ptr2 = new char[15]同样分配了16个空间的字节,而char* ptr3 = new…
#include <stdio.h> #include <vector> #include <algorithm> #include <new> struct foo_t { int size; }; class cmp_t { public: bool operator()(foo_t *a, foo_t *b) { return a->size >= b->size; } }; int main(int argc, char *argv…
本文针对MySQL InnoDB中在Repeatable Read的隔离级别下使用select for update可能引发的死锁问题进行分析. 1. 业务案例 业务中需要对各种类型的实体进行编号,例如对于x类实体的编号可能是x201712120001,x201712120002,x201712120003类似于这样.可以观察到这类编号有两个部分组成:x+日期作为前缀,以及流水号(这里是四位的流水号). 如果用数据库表实现一个能够分配流水号的需求,无外乎就可以建立一个类似于下面的表: CREAT…
前几天负责的理财产品线上出现问题:一客户赎回失败,查询交易记录时显示某条交易记录为其他人的卡号. 交易的链路如下: 出现该问题后,我们对日志进行了分析,发现主站收到的两笔流水号完全相同,然而主站却没有做重复校验,将两笔订单(A和B)都发往基金系统,基金系统做了重复校验,收到A之后开始处理,收到B之后直接报错返回,A处理完后又正常返回.但是主站根据流水号更新数据库状态,却将两笔订单更新错了,导致客户的交易记录出错. 该问题虽然不会造成用户的资金损失或记账出错,但是交易记录出错会带来极差的用户体验,…
日常运维中的坑真是防不胜防,不一小心就遇到别人给你挖的坑.最近又遇到经验不足的DBA不知道从哪拷贝的配置文件(据说是当时参加某培训机构视频培训是资料里的模板,真的是误人子弟呀),其中把max_binlog_cache_size设置的只有2G,而MySQL早已将此参数的默认值调整的很大了(18446744073709547520),实在没想通为何有人会如此修改. 1. 故障描述 收到告警,从库SQL线程停止,查看日志,其中的错误内容如下: failed executing ; Could ; ha…
感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复.以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题,甚至在一些银行或者电商的登录与查存页面同样存在这个问题,一旦造成撞库无论对用户账号的安全性还是网站的负载都是巨大的挑战.其实造成问题的原因并不复杂,主要是研发在开发过程中缺少对安全的认知,造成的疏忽. 今天心血来潮自己写了个验证码来模拟下出现的问题,首先我们从前端页面开始分析: <!DOCTYPE html> <html> <head> <…
今天来说一下Proguard中关于optimize的问题.先上一张异常图片 最近项目重构,重新调整了各个组件之间的依赖关系.过程中,在项目Proguard这块卡住了,最开始还好,Proguard只是提示警告,项目构建失败.于是我根据提示的警告信息,把先关的一些依赖所了混淆的一些配置处理.重新触发构建,日志不再有警告,但此时却出现了一个error! 如上图所示,这是我项目中完整的错误日志.下面是我proguard-project.txt文档中所配置的optimize相关内容. # 指定混淆时采用的…
NSTimer可以用来执行一些定时任务,比较常用的方法就是: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 可是,仔细看官方文档中对于参数target的说明,可以看到这样一段: target The object to which to send the mes…
1. /var/log/messages 频繁报错: Jul :: localhost suhosin[]: ALERT - script tried to increase memory_limit to bytes which is above the allow ed value (attacker ) 查看/home/www/bbsphp/index.php,发现有以下语句: ini_set("memory_limit","500M"); 查看php.ini…
背景 系统: SpringBoot开发的Web应用: ORM: JPA(Hibernate) 接口功能简述: 根据实体类ID到数据库中查询实体信息,然后使用RestTemplate调用外部系统接口获取数据. 问题现象 浏览器页面有时报504 GateWay Timeout错误,刷新多次后,则总是timeout 数据库连接池报连接耗尽异常 调用外部系统时有时报502 Bad GateWay错误 分析过程 为便于描述将本系统称为A,外部系统称为B. 这三个问题环环相扣,导火索是第3个问题,然后导致第…
最近在网上冲浪,读到一则新闻,摘抄下这则新闻: ======================= 以下文字摘抄自互联网==================== 1990年1月15日,AT&T电话网络位于纽约的一台交换机当机并且重启,引起它邻近交换机瘫痪,由此及彼,一个连着一个,很快,114台交换机每六秒当机重启一次,六万人九小时内不能打长途电话.当时的解决方式:工程师重装了以前的软件版本.事后的事故调查发现,这是break关键字误用造成的. ======================= 以上文字…
Pinpoint 简单介绍 Pinpoint 是用 Java 编写的 APM(应用性能管理)工具,用于大规模分布式系统,以帮助分析系统的总体结构以及分布式应用程序的组件之间是如何进行数据互联的. 安装agent是无侵入式的 对性能的影响最较小 架构图: 最近遇到的问题 线上的服务一直运行正常,突然各种报警响起(邮件.短信.微信通知),赶紧登录kibana查看运行日志(日志有点延迟)搜不到???? 一面继续搜索kibana,一面跟运维沟通申请开通临时账户,提交oa经过一系列的审批,最后运维特别给力…
一.问题描述 在一个fixed-data-table(一个React组件)制作的表格中,需要给表头的字段一个提示的特效,所以做了一个提示层 这个提示层被固定(拖动表格的水平滚动条时固定)的表格列遮住 无论设置该提示层的z-index为多大,都不能让其在固定表格列列之上 效果如下: 二.问题分析 通过对页面的DOM层级进行分析,把有可能影响层级的部分抽出来: 主要有以下几个部分会影响到元素的层级(关于设置了哪些属性会影响层级请看后面的附),下面逐一分析: A元素和B元素都有一个样式是positio…
这是悟空的第 170 篇原创文章 官网:http://www.passjava.cn 你好,我是悟空. 本文主要内容如下: 一.前言 最近项目的生产环境遇到一个奇怪的问题: 现象:每天早上客服人员在后台创建客服事件时,都会创建失败.当我们重启这个微服务后,后台就可以正常创建了客服事件了.到第二天早上又会创建失败,又得重启这个微服务才行. 初步排查:创建一个客服事件时,会用到 Redis 的递增操作来生成一个唯一的分布式 ID 作为事件 id.代码如下所示: return redisTemplat…
SQL:sum里加条件SELECT SUM( CASE WHEN "V7010" BETWEEN 0 AND 0.1 THEN 1 ELSE 0 END) FROM "CNYB"."WEA_DAY_CHECK" where "DATE">'12' AND "CODE"='7001' 技巧1 比较运算符能用 “=”就不用“<>” “=”增加了索引的使用几率. 技巧2 明知只有一条查询结果,那…
这是why技术的第33篇原创文章 本周是在家办公的一周,上面的图就是我在家的工位. 工欲善其事,必先利其器.在家办公,我是认真的. 在家里开发的时候有需求是这样的:一个如果接口调用失败,需要自动进行重试. 虽然关系不大,但是我还是想到了Dubbo的集群容错策略:Failover Cluster,即失败自动切换. (这个转折是不是有点生硬.......) 所以借本文对于Dubbo的Cluster集群和Failover Cluster(失败自动切换)策略进行一个详细分析. 本文如果没有特别说明的地方…
简述C#中IO的应用   在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.IO 定义了一系列类.接口.枚举.结构和委托.它们大多数包含在 mscorlib.dll! 另外有一部分部分 System.IO 命名空间的成员则包含在systcm.dll程序集中.System.IO命名空间的多数类型主要用于编程操作物理目录和文件,而另一些类型则提供了从字符串缓冲区和内存区域中读写数…
最近服务器上一个后台传输文件的服务,经常会报出异常来,只能强行终止并重启. 昨天刚好有空,现场抓了一下dump,再把程序扔到IDA里看了一下,很快就找出原因了,原来是调用fclose时出错的. 使用C的Runtime函数进行文件操作,也就是fopen,fread,ftell,fclose这些,本身这并没有什么问题 但是出现异常的位置往上一点,程序写了日志,主要内容是“打开文件失败,错误原因:xxxxxx” 也就是说,在使用fopen打开文件失败了之后,程序仍然使用了fclose来关闭这个无效的F…
凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要.更重要的是,不值得花时间和精力去写自己的系统去代替它.真的,使用Core Data吧. 这个转载老外的感想想法 为什么我不使用Core Data Mike Ash写到: 就我自己而言,我不是个狂热粉丝.我发现API是笨拙的,并且框架本身对于大量的数据是极其缓慢的. 一个实际的例子:10,000条目 想象一个RSS阅读器,一个…
谈谈用SQLite和FMDB而不用Core Data 发布于:2014-04-22 11:22阅读数:4235 凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要. 更重要的是,不 “”   阅读器 Core DataSQLiteFMDB 来源:伯乐在线 凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加…
今天这篇文章我们来聊一聊如何提升并优化ASP.NET Core应用程序的性能,本文的大部分内容来自翻译,当然中间穿插着自己的理解,希望对大家有所帮助!话不多说开始今天的主题吧! 我们都知道性能是公共网站取得成功的关键因素之一.如果一个网站的响应时间超过3秒,那么用户通常不会再此光顾(此网站).谷歌,Bing,百度以及其他搜索引擎也更倾向于推荐优化后的,移动友好的以及响应速度更快的网站. 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/10507984.…
现在都快找不到ASP.NET的培训课程了. 知道我要开课做培训,有同学劝我:“憋讲那什么.NET,讲Java,现在这个火!”我说我Java不熟,“唉呀!C#转Java,分分钟的事!以飞哥你的经验,……” 其实,我是有点心动的.不得不承认,他说的都是事实.要不要再回头把Java捡起来?…… +++++++++++++++++++++ 这里我突然想补充几句.在[超划算]免费课程,付费讲解里我提到:能自学,就不要培训,可能有些同学还没明白为什么.其实很简单,就因为自学能力是开发人员必不可少的能力.做程…
一.瞎扯点什么 1.1 阿波罗 ​ 阿波罗是希腊神话中的光明之神.文艺之神,同时也是罗马神话中的太阳神:他是光明之神,从不说谎,光明磊落,在其身上找不到黑暗,也被称作真理之神.他非常聪明,通晓世事,是预言之神. 后世各种各样的项目都喜欢以阿波罗命名,比如著名的美国登月计划:阿波罗计划: 既然携程以阿波罗(Apollo)命名项目,那我们我们接下来看看,携程阿波罗能给我们程序员带来怎样的光明(我希望这个光明是可以每天下午6点钟的太阳 哈哈): 下面看看.net core和Apollo会碰撞出什么样的…
1. 问题背景 上周线上某模块出现锁等待超时,如下图所示: 我虽然不是该模块负责人,但出于好奇,也一起帮忙排查定位问题. 这里的业务背景就是在执行到某个地方时,需要去表中插入一批数据,这批数据需要根据数据类型分配流水号.这与我的select for update引发死锁分析提到的流水号分配差不多:通过数据库悲观锁实现多实例部署的流水号生成与分配. 2. 问题排查 那么需要排查的问题很简单,为什么获取流水号的时候会发生锁等待超时? 从上面截图中的异常栈中,我们也可以看出:首先进入了带有@Trans…
I’m going to start a short series on Core Data relationships and maybe throw in some general Core Data stuff too. Here in part one we’re just going to set our app up with core data and add two entities with a simple one to one relationship between th…
Go 的通道有两种操作方式,一种是带 range 子句的 for 语句,另一种则是 select 语句,它是专门为了操作通道而存在的.这里主要介绍 select 的用法. 一.select的语法 select 语句的语法如下: select { case <-ch1 : statement(s) case ch2 <- 1 : statement(s) - default : /* 可选 */ statement(s) } 这里要注意: 每个 case 都必须是一个通信. 由于 select…
前言 前面介绍了认证中间件,下面看一下授权中间件. 正文 app.UseAuthorization(); 授权中间件是这个,前面我们提及到认证中间件并不会让整个中间件停止. 认证中间件就两个作用,我们的认证方案如果实现了IAuthenticationRequestHandler,那么会调用HandleRequestAsync判断是否继续运行. 然后我们设置默认的认证方案,那么会调用其认证方案的具体的处理,如果认证成功,那么会赋予context.User. 但是在这个认证中间件如果认证不过,那么也…