Debug
工具/原料
printf
方法/步骤
1、1.筠续师诈read一个正常的文件,读几个字节都失败2.后来发现关键不是read失败,而是read之前的open就失败了。3.open失败鹚兢尖睁的信息:error:24Toomanyopenfiles,这种情况一般是两种情况1->之前什么地方占用了资源fd,但忘记什么的没有去释放fd,造成资源的leak2->系统对同时open的资源是有限制的,ulimit-a可以查,一般在大吞吐的数据量的操作中可能会出现,系统瓶颈嘛,比如网络大数据的查询什么的,千千万万的网络申请一下子过来。升级硬件或系统,按需求扩大限制值应该可以。但我的这个问题应该不是第二种,应该是第一种。但平台openfile或在socket的地方太多了,而且不是很容易重现,需要跑200多次重现一次。但有几个有用的信息:1.assert的地方在socket的portingfuncion里,应该是socket相关2.跑200多次就重现一次,更说明是有某个地方socketopen了,但没有close,虽然很少的地方,但累计下来最后超了限制值。3.平台跑了那么久,之前没有报这个问题,更可能是新改或系统调整某些老代码老地方没有相应调整过来的原因,比如应用代码没及时响应调整。所以缩小范围,到应用中查线索。