linux_进程死锁定位_端口无法连接 发表于 2019-03-22 | 分类于 后台技术 linux 进程死锁定位 最近定位一个服务问题时发现telnet某个端口,无法链接。无奈之下只能一步步排查。 端口是否存在ss -l|grep LISTEN|grep 9999 如果端口存在那么可以观察该端口上的recv-q send-q 如果是发生死锁一般情况下这两个队列只会增加(当然 ... 阅读全文 »
linux利用进程信息定位内存泄漏采用pmap 发表于 2019-03-22 | 分类于 后台技术 比如进程id:1381由于带有虚拟函数的类实例在new时再内存heap中会有对应的虚函数表,所以我们可以通过这个切入点来分析heap中的各类实例的统计数,然后进一步根据实例的数量判断是否存在内存泄漏。 gdb attach 138112345(gdb) shellp pmap 1381(gdb) s ... 阅读全文 »
linux服务器性能分析_TCP内存 发表于 2019-03-22 | 分类于 后台技术 linux 服务器性能分析 网络连接数cat /proc/net/sockstat或者ss 进行统计(比较慢) 系统dmesg提示 socket out of memory 首先查看系统socket使用了多少,参考1. 查看系统给tcp分配的内存大小限制cat /proc/sys/net/ip ... 阅读全文 »
redis-dict字典 发表于 2019-03-22 | 分类于 后台技术 redis dict redis 数据库结构是通过dict 字典来完成的。该dict数据结构如下: 12345678910111213141516171819202122typedef struct dictEntry { void*key; ... 阅读全文 »
stdcall_cdecl 发表于 2019-03-22 | 分类于 后台技术 _stdcall 与 _cdecl的区别首先,需要了解两者之间的区别:WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除??如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完 ... 阅读全文 »
tcpburn-压测 发表于 2019-03-22 | 分类于 后台技术 安装123456789101112131415yum install libpcap libpcap-develcd tcpcopy-0.9.9make cleansh autogen.sh./configure --enable-single --enable-pcap --enable-adva ... 阅读全文 »
C数组内存分布 发表于 2019-03-22 | 分类于 后台技术 数组内存中分布情况 二维数组注意栈中地址是从高地址向低地址生长: 1234567891011121314151617181920212223242526272829303132333435(gdb) p/x &arr[0][0]$7 = 0x7fffffffe440(gdb) p/x ... 阅读全文 »
共享内存操作 发表于 2019-03-22 | 分类于 后台技术 C共享内存 ftok —>文件到key,保证唯一性,存放在keys中,并且通过下面的方法将对应的字符串设置到进程的环境变量中,以便fork出来的进程的可以访问这些环境变量: 1i = setenv(env_strings[apptype],envstr,1); 获取shm_id ... 阅读全文 »
利用tcpburn进行长连接压测、现网流量压测 发表于 2019-03-22 | 分类于 后台技术 利用tcpburn进行长连接压测、现网流量压测 安装tcpcopy(主要是使用其intercept)或者是intercept 配置配置是成功的关键,注意所有用来部署intercept、tcpburn、目标服务都必须在同一个网段。0)目标服务:待测试的服务部署 这里假定端口是16001 ip ... 阅读全文 »
基于linux-汇编深入理解c程序 发表于 2019-03-22 | 分类于 后台技术 一个简单的入门实例 实现一个简单的exit(0); exit.s 123456789101112131415161718192021222324252627282930 # 数据段的开始 .section .data # 代码段开始(存放程序指令的部分) .section .text ... 阅读全文 »