tcp不同场景下的关闭分析 tcp的关闭可以分为两大类场景一、socket主动close,或在socket没有close的情况下进程exit退出,或kill -9强制关掉进程( kill掉进程时,内核会清理掉文件描述符(包括socket描述符 ))这3种场景都可以看做同一种情况。具体又可以分为两种情况如果发送缓冲区或接收缓冲区任然有数据未发送或未接收,则会发rst包给对端,对端收到后不回应直接关闭连...
linux LVM分区 查看dm设备 在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 0.19 0.57 2.92 341228 1753052dm-0...
timeout的一些常规解决办法 一般来说timeout并不会对服务器造成什么大的影响,但如果timeout过多导致进程文件描述符不够用或服务器端口不够用就需要注意了。下面是一些常规的timeout解决办法。注意:不是长久之计/etc/sysctl.conf net.ipv4.tcp_tw_reuse = 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;(安...
map使用不当导致cpu暴涨 上线新功能导致服务器cpu暴涨。经分析为map assign过于频繁,导致频繁的内存malloc与memorymove,耗尽cpu。使用go tool定位过程记录1. 获取进程内函数执行统计 go tool pprofhttp://10.139.252.109:9360/debug/pprof/profile top10的函数如下: 2. runt...
子shell 进程ID($$) shell脚本中$$指当前进程ID,而调用$()执行命令时会生成子shell,按理说$()中用$$获取到的进程号是子shell的进程ID,但shell的规则是它获取到的是current shell的pid,而current_shell的进程id在这表现为派生子shell的shell进程ID #!/bin/bashecho $$test(){ echo $$...
tcp SACK选择确认位 场景考虑一个场景,tcp发动端连续发送了4个包1-200,201-300,301-400,401-500. 接收端接收了1-200, 201-300,401-500。由于301-400没有收到,所以接收端只能发送一个ack 301给发送端,以确认1-300都收到,而401-500无法给发送端确认。这时发送端不知道301-400和401-500这两个包是否到达接收端。解决办法...
自旋锁 死锁 以前在看linux操作系统时始终理解不了单CPU自旋锁导致死锁的问题.今天在网上搜了一下总算是理解了.摘录如下 想象你的内核代码请求到一个自旋锁并且在它的临界区里做它的事情,在中间某处,你的代码失去了处理器。或许它已调用了一个函数(copy_from_user,假设)使进程进入睡眠。也或许,内核抢占发威,一个更高优先级的进程将你的代码推到了一边(注意,这都是假设,自旋锁其实不允许这...
http长连接的一些点 http短连接,一般是服务器端主动关闭连接(历史原因 https://www.zhihu.com/question/24338653)http 请求header头中通过Connection: 头字段来指定是否需要keep-alive。 其中http1.0和http1.1关于Connection头又有不同点http1.0不支持keepalive,所以发送头为Connection...
可重入内核与可重入函数 所有的内核都是可重入的.但可重入内核不只是包含可重入函数.也可以包含不可重入函数,这时候信号量,自旋锁之类的同步机制就派上用场了.转载于:https://www.cnblogs.com/traxex/archive/2013/04/12/5850893.html...
梦想 50岁之前走一遍丝绸之路,体验东西历史文化交流中的物是人非去一趟中东,踏上人类文明的起源地。感受古文明的征服与被征服,文化的传播与互相影响。路线-》波斯-伊拉克-叙利亚-埃及-突尼斯-希腊-意大利待续转载于:https://www.cnblogs.com/traxex/p/5802867.html...
mysql监听多个端口的两种方式 有两种方式。 1.利用MYSQL的mysqld_multi,在my.cnf中配置多个[mysqldN],比如[mysqld0],[mysqld1]。2.创建多个配置文件和相应目录,如my.3306.cnf,my.3307.cnf.两种方式差不多。第一种方式优点在于集中管理一个配置文件就可以(但一般不会在同一个服务器上监听三个以上端口吧)。但定制每个端口实例不太方便(毕竟...
linux top部分列详解 linux TOP按f键可以出来显示条目选项.按p可以调出SWAP列. SWAP列相对于进程来说其实就是保存在该进程对应的文件中(而非保留在SWAP分区中).大小等于VIRT-RES的大小.VIRT为进程申请的虚拟内存大小(但不会全用),如MYSQL为了以后的运行可能申请1G的虚拟内存,但只会将最常用的和正在使用的驻留在内存中.RES即是真正驻留的物理内存大小(即算作真正的内存消耗...
socket 连接复位情况 在如下几种情况会产生连接复位 1. 在另一端已经关闭连接的情况下,本端还往这个连接上(fd)读写数据2. 一端奔溃并重新启动,另一端过来的请求会收到连接复位 转载于:https://www.cnblogs.com/traxex/p/5850877.html...
nginx hash源码分析 HASH是NGINX核心数据结构之一.见几个链接.分析的很详细 1.http://www.linuxidc.com/Linux/2012-08/67040.htm2.http://www.oschina.net/question/234345_420653.http://blog.csdn.net/lifeibo/article/details/58971264.http:...
linux优先级 进程调度优先级中PR 和NI的含义,用TOP可以看到 PR 进程的优先级。在Linux 2.6.23之前的版本中PR是一个动态值,在运行的过程中可能出现变化。大体策略是:如果一个进程sleep了比较多的时间,PR值会降低(即优先级提高);如果一个进程占用了大量的CPU时间,PR值会升高(即优先级降低)。在2.6.23版本之后,由于引进了CFS调度策略,不再简单根据一个进程sleep...
rsync invalid gid 执行rsync时经常会遇到invalid gid ***,或invalid uid ***的问题 这是因为服务器端没有这个用户组或者用户,但你在配置文件里写了该用户组或用户.比如我的报错invalid gid nobody我用id命令id nobody 显示如下uid=65534(nobody) gid=65534(nogroup) groups=65534(nog...
fgetc read缓冲机制区别 read属于系统调用,它的缓存是基于内核的缓冲,是记在内核空间的. 而fgetc是标准函数, 是在用户空间I/O缓冲区的比如用fgetc读一个字节,fgetc有可能从内核中预读1024个字节到I/O缓冲区中,再返回第一个字节,这时该文件在内核中记录的读写位置是1024,而在FILE结构体中记录的读写位置是1.所以如果read一次读取的缓冲大小是1个字节,则1K的文件,r...
linux查看raid信息 有时我们需要看一下服务器的raid信息. 1.软件raid的话可以通过 cat /proc/mdstat md1 : active raid1 sdb3[1] sda3[0] 480572352 blocks [2/2] [UU] md3 : active raid1 sdb2[1] sda2[0] 1952704 blocks ...
创建动态链接是链接静态库报错 创建一个动态库时报错,如下 relocation R_X86_64_32 against `vtable for Base' can not be used when making a shared object; recompile with -fPIC../sdk/lib/libbase.a: could not read symbols: Bad value因为其中链...
mysql重启失败 ib_logfile 重启mysql主库时遇到 log file /data1/webserver/mysql/data/ib_logfile0 is of different size 0 5242880 bytes 只要rm ib_logfile*即可。ib_logfile类文件是innodb引擎的事务日志文件。看mysql文档The ib_logfile's hold statements...