C/C++
文章平均质量分 81
lzueclipse
通过努力改变自己,提升自己。
展开
-
client和server,如果server的port number已经确定,两者之间最大的TCP连接数是多少?工程上有什么需要注意的(1)
1. TCP基础TCP connection的四元组为“<src IP(源IP), src Port(源端口), dst IP(目的IP), dst Port(目的端口)>”;TCP port占用2个Bytes,有效的TCP port号为1~65535。<10.0.0.1, 4321, 10.0.0.2, 80> 和 <10.0.0.1, 4321, 10.0.0.2...原创 2018-03-01 18:33:45 · 1343 阅读 · 0 评论 -
/proc/sys/vm/max_map_count耗尽时,调用glibc 2.11.3 free()导致程序crash,问题追踪和解决
1. 问题在客户环境下,当我们的程序消耗较大内存时,会偶尔crash。通过gdb分析,程序core dump在malloc/free函数内。当把/proc/sys/vm/max_map_count 从65530增加到131070,程序再也不crash。相关命令 echo 131073 > /proc/sys/vm/max_map_count2. core原创 2017-12-15 14:45:40 · 4215 阅读 · 0 评论 -
由STL map调用clear后,内存不返还给操作系统的问题出发,探讨glibc malloc/free行为
本博客所有的代码在github中。https://github.com/lzueclipse/learning/blob/master/c_cpp/malloc_and_my_cache/1. 问题我们的程序有几十个线程,每个线程拥有一个std::map,每个线程都要向自己的std::map中插入大量的数据,但每个数据只有几十字节;当使用完std::map,调用map.原创 2017-12-15 14:44:58 · 624 阅读 · 1 评论 -
以菱形链接(diamond link)为例,探讨Linux下连接器和加载器对Shared libarary兼容性的处理
相关代码在https://github.com/lzueclipse/learning/tree/master/c_cpp/diamond_link1. 什么是菱形链接(diamond link)菱形链接(diamond link)(参考文献 1)能十分清楚的描述出我们要讨论的问题。如上图所示,我们的程序将要使用某厂家的共享库libvendor1.so,同时也要原创 2017-12-15 14:43:14 · 516 阅读 · 0 评论 -
client和server,如果server的port number已经确定,两者之间最大的TCP连接数是多少?工程上有什么需要注意的(2)
在第1部分,我们通过实验验证了当Server Port确定的情况下,Client和Server两者之间最大的TCP连接数。那么问题来了,有了这样的限制,我们在部署或编程实践中应该如何面对这样的限制。下面提供几个思路。1. 多IP仅仅从部署上考虑的话,Client或Server配置多个IP,可以在不修改代码的情况下,突破第1部分中说的TCP连接数限制。2. 采用可靠UDP如果采用UDP,就没有Con...原创 2018-03-01 19:31:56 · 400 阅读 · 0 评论