
Linux/Unix
文章平均质量分 78
unix21
这个作者很懒,什么都没留下…
展开
-
Linux kernel futex.c的bug导致JVM不可用
JVM死锁导致线程不可用,然后会瞬间起N个线程,当然也是不可用的,因为需要的对象死锁,然后耗尽文件句柄导致外部TCP无法建议拒绝服务,jstack之后就会恢复。解决办法:替换中间件类库 ,比如httpclient的。原因大致是:某个switch分支缺少memory barrier的正确处理,导致外部应用如JVM的lock被错误锁住;一般jstack连后就恢复。https://github.com/...原创 2018-04-08 09:54:01 · 1468 阅读 · 0 评论 -
Makefile
make报错:*** 遗漏分隔符 (您的意思是用 TAB 代替 8 个空格?)。 停止。修改办法:“空格”“空格”@ 换为 "Tab"@原创 2013-07-14 19:10:16 · 1478 阅读 · 0 评论 -
linux环境内存分配原理
generate-core-file可将调试中的进程生成内核转储文件gcore可以从命令行直接生成内核转储文件,该命令无需停止正运行的程序以获得内核转储文件(gdb) generate-core-fileSaved corefile core.2785(gdb) gcore 'ps'Saved corefile 'ps' --《未完》---原创 2012-12-29 12:50:17 · 3353 阅读 · 0 评论 -
从Nginx绑定80端口学套接字编程
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面. 例子用法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,一个hello word 也要与处理成800行的代码 -E选项,表示让gcc只进行“预处理”就行了。 所谓的预处理,就是把原创 2013-10-11 09:35:44 · 1594 阅读 · 0 评论 -
使用NetBeans IDE开发C程序
建立一个malloc和free的队列,用一个malloc就加入队列(加入行号和函数名),用一个free就放出一个malloc,最后这个队列如果不是空,就说明内存有泄露,反之就可以偷着乐了。原创 2013-09-28 10:02:34 · 4220 阅读 · 1 评论 -
linux常用命令
#man -k 函数 #man 返回的数字 函数# man -k file | grep umask格式化代码:# indent tinyfastcgi.c fprintf(stdout, "spawn-fcgi: waitpid返回值>>> %d\n", waitpid(child, &status, WNOHANG)); fprintf(s原创 2013-03-13 09:53:07 · 873 阅读 · 0 评论 -
使用man在线手册页
要查看linux下的函数umask可以使用man,例如# man 2 umask如果不知道man后的节号,可以使用-k先查找# man -k umask如果使用-k返回太多内容,可以使用grep# man -k file | grep umask原创 2013-04-20 12:10:57 · 1100 阅读 · 0 评论 -
Linux线程编程
1.编译undefined reference to 'pthread_create'问题解决 出现如下错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join'问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread原创 2013-11-13 18:28:55 · 1032 阅读 · 0 评论 -
open的O_DIRECT选项
http://blog.chinaunix.net/uid-223060-id-2127385.htmlhttp://blog.youkuaiyun.com/hhtang/article/details/6605951查看磁盘分区:#df -h#tune2fs -l /dev/mapper/VolGroup-lv_root或者#dumpe2fs /dev/mapper/原创 2013-11-11 19:19:32 · 1653 阅读 · 0 评论 -
使用strace和ltrace跟踪程序调用
ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用.1.系统调用的输出对比程序代码:#include main(){ char str[]= "Abcde"; printf("\n string = %s length = %d \n",str,str_length(str));}int str_length原创 2013-11-23 21:00:37 · 3180 阅读 · 1 评论 -
利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配
TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载。1.安装libunwind库 可以从http://download.savannah.gnu.or原创 2013-09-28 09:26:53 · 5218 阅读 · 0 评论 -
FastDFS安装与使用
安装注意要修改:/etc/fdfs/client.confvim /etc/fdfs/client.confbase_path=/home/yuqing/fastdfs 修改为: base_path=/home/fastdfstracker_server=192.168.209.121:22122 修改为: tracker_server=10.201.20.237:22122##i原创 2013-08-08 18:54:34 · 2385 阅读 · 0 评论 -
Linux内核编译
Linux内核编译1.下载内核https://www.kernel.org/最新的版本是3.11.6# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.11.6.tar.xz下载好源文件以后放置在哪里都可以,我放置在user目录下。 2.解压源文件xz压缩文件方法或命令xz -z 要压缩的文原创 2013-10-26 17:41:36 · 1367 阅读 · 0 评论 -
Advanced Memory Allocation 内存分配进阶
May 01, 2003 By Gianluca Insolvibile inEmbedded SoftwareCall some useful fuctions of the GNU C library to save precious memory and to find nasty bugs.Dealing with dynamic me原创 2013-10-20 22:44:43 · 1691 阅读 · 0 评论 -
使用多线程还是用IO复用select/epoll? epoll 或者 kqueue 的原理是什么?
原作者:蓝形参原文:http://www.zhihu.com/question/20114168/answer/14024115使用多线程还是用IO复用select/epoll?多线程模型适用于处理短连接,且连接的打开关闭非常频繁的情形,但不适合处理长连接。多线程模型默认情况下,(在Linux)每个线程会开8M的栈空间,再TCP长连接的情况下,2000/分钟的请求,几乎可以假定有上原创 2013-10-18 10:46:27 · 2236 阅读 · 0 评论 -
write的奥秘
在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一 个简简单单的write函数能够完成向设备里面写数据的复杂过程。 这里的源代码主要来自两个原创 2013-10-17 21:26:43 · 2038 阅读 · 0 评论 -
Linux守护进程实现
Linux守护进程#include #include #include #include int daemonize(void){ int fd; switch(fork()) { case -1: return (-1); case原创 2013-03-20 22:56:14 · 1082 阅读 · 0 评论 -
利用Apache的ab命令做Benchmark性能测试
源码:http://code.google.com/p/flexihash/https://github.com/pda/flexihashconsisten_hash.class.php/*** Consisten Hashing**/class ConsistenHash {private $_targetNum = 0;原创 2013-03-01 11:08:54 · 568 阅读 · 0 评论 -
Linux下高并发socket最大连接数所受的各种限制
转自:http://blog.sae.sina.com.cn/archives/19881、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命原创 2013-12-09 18:19:55 · 1379 阅读 · 0 评论 -
Linux环境Nginx安装与调试以及PHP安装
linux版本:64位CentOS 6.8Nginx版本:nginx1.17.7php版本:php5.6.40说明:本博不定时更新为新版本1.编译安装Nginx官网:http://wiki.nginx.org/Install下载:http://nginx.org/en/download.html安装GCC安装nginx需要gcc,如果因为需要安装grpc...原创 2013-01-26 17:22:43 · 16695 阅读 · 0 评论 -
shell语法以及监控进程不存在重启
转码# dos2unix ./test.sh权限# chmod a+x ./test.sh语法变量var="111"echo $varecho ${var}运算no1=4;no2=5;let result=no1+no2echo $result;自增自减少let no++ let no--[]和l原创 2016-02-28 22:19:27 · 724 阅读 · 0 评论 -
Linux系统轻量级监控工具monitorix和munin安装
提到监控工具,大家都会想到zabbix等重量级的,这些好是好,但是需要安装数据库等等,如果有时候希望简单点其实可以借助一些轻量级的监控工具,例如monitorix和munin。需要做点前置工作开启Nginx和php-fpm的status,因为可以利用监控工具monitorix和munin甚至于zabbix等来监控,要的就是实时的快照数据。1.开启Nginx的status原创 2016-02-26 19:00:15 · 1676 阅读 · 0 评论 -
阿里巴巴开源产品列表
收集:Jstom原创 2016-02-21 22:41:02 · 9010 阅读 · 0 评论 -
PHP网站首页打不开的原因讲起
最近有个网站首页打不开,偶尔报504错误,如图所示,这是nginx直接返回的。今天下午16:00多又出现了,看了下阿里云数据库连接,其实在晚上2:00也出现了一次。现在似乎是数据库压力很大,由于我们的数据库服务器同时有好几个库在线上,并不确定是其他系统把数据库拖垮还是当前这个系统的原因。使用语句查询数据库的会话数SQLSERVER 查看当前连接数原创 2016-02-18 19:00:59 · 6009 阅读 · 0 评论 -
CentOS7防火墙
CentOS 7.0,启用iptables防火墙1、关闭firewall: 停止firewall # systemctl stop firewalld.service禁止firewall开机启动 # systemctl disable firewalld.service2、安装iptables防火墙 # yum install iptables-se原创 2015-08-16 15:11:13 · 1000 阅读 · 0 评论 -
Linux环境编译安装Mysql以及补装innodb引擎方法
mysql安装 5.6以后可能会收费,所以选择5.1以下从台湾中山大学镜像下载下载解压# wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz# tar zxvf mysql-5.1.73.tar.gz# cd mysql-5.1.73创建用户运行MySQL数原创 2014-01-17 16:28:06 · 4134 阅读 · 0 评论 -
Linux环境PHP5.5以上连接SqlServer2008【全网最经典无错版】
linux版本:64位CentOS 6.4Nginx版本:nginx1.8.0php版本:php5.5.28Sqlserver:2008 一般来说,PHP+mysql是最经典的组合,跑在Linux环境是非常好的,如果是PHP+Sqlserver是跑在windows环境下的。今天需要Linux环境下PHP调用Sqlserver,用了一天的时间,终于把这个问题彻底研究清楚原创 2015-08-12 20:33:19 · 2827 阅读 · 3 评论 -
Thift安装
thrift官网http://thrift.apache.org/#wget http://mirror.bit.edu.cn/apache/thrift/0.9.2/thrift-0.9.2.tar.gz#tar -zvxf thrift-0.9.2.tar.gz# ./configure --prefix=/usr/local/thrift#make && make原创 2014-12-03 20:46:49 · 3536 阅读 · 0 评论 -
Linux环境编程
1.__sync_fetch_and_addgcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub (type *ptr, type value, ...)t原创 2014-11-11 19:27:13 · 1099 阅读 · 0 评论 -
Linux监控工具dstat
dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, dstat也可原创 2014-02-15 23:52:34 · 1956 阅读 · 0 评论 -
Linux进程浏览器htop安装与使用
htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令。当前具有按树状方式来查看进程,支持颜色主题,可以定制等特性。其实htop是top的加强版,增加了很多功能。官网 http://hisham.hm/htop/下载地址http://hisham.hm/htop/releases/下载安装# wget http://hisham.hm/hto原创 2014-02-15 23:13:53 · 1350 阅读 · 0 评论 -
频繁分配释放内存导致的性能问题的分析--brk和mmap的实现
原文地址:已经找不到现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。初步分析majflt代表major fault,中文名叫原创 2013-11-11 18:10:47 · 2959 阅读 · 1 评论 -
Linux配置SSH无密码登陆
可以使用“公钥私钥"认证的方式来进行ssh登录。所谓 "公钥私钥"认证方式,就是首先在客户机上创建一对公钥和私钥,公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa然后把公钥文件放到目标服务器上(~/.ssh/authorized_keys), 自己保留好私钥。在使用ssh登录时,ssh客户端会发送私钥去和服务器上的公钥进行匹配,如果匹配成功就可以登录原创 2014-02-12 14:46:52 · 1018 阅读 · 0 评论 -
Virtualbox安装使用注意
翻转整数位刚看到的一个问题,翻转一个整数位,最直接的想法可能是这样上面的方法虽然直观,但却不是高效的,于是初看有些头晕,其实也很好理解:0x55555555:每个16进制对应4位2进制,5对应0101,所以0101,0101,0101,0101,0101,0101,0101,01010x33333333:0011,0011,0011,0011,0011,0011,0原创 2013-10-21 18:53:41 · 1442 阅读 · 0 评论 -
Linux TCP/IP协议栈笔记
数据包的接收作者:kendoKernel:2.6.12一、从网卡说起这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析。这里以Intel的e100驱动为例进行分析。大多数网卡都是一个PCI设备,PCI设备都包含了一个标准的配置寄存器,寄存器中,包含了PCI设备的厂商ID、设备ID等等信息,驱动程序使用来描述这些寄存器的标识符。如原创 2013-09-28 10:11:08 · 1356 阅读 · 0 评论 -
ldconfig动态链接库管理以及修改ld.so.conf.d
将"/usr/local/lib"加入配置文件重执行命令:echo "/usr/local/lib" >> /etc/ld.so.conf然后再直接执行:ldconfig原创 2013-09-28 09:44:11 · 18314 阅读 · 0 评论 -
Linux netstat命令
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息#netstat从整体上看,netstat的输出结果可以分为两个部分,一个是Active Internet connections,称为有源TCP连接,另一个是Active UNIX domain sockets,称为有源Unix域套接口。在上面的输原创 2013-03-17 10:39:24 · 1157 阅读 · 0 评论 -
bzero, memset ,setmem 区别
bzero 原型:extern void bzero(void *s, int n);用法:#include 功能:置字节字符串s的前n个字节为零。 说明:bzero无返回值。 举例: // bzero.c #include #include int main()原创 2013-03-29 18:03:48 · 1163 阅读 · 0 评论 -
Linux socket 网络编程 常用头文件
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM)提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM)提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW)该接口允许对较低层次协议,如IP,ICMP直接访问。二 基本套接字系统调有有如下一些原创 2013-03-29 17:50:15 · 1051 阅读 · 0 评论 -
lighttpd+PHP安装
lighttpd版本:1.4.32php版本:5.4.11 2013.2.3第一次php版本:5.4.12 2013.3.14第二次修改 1.lighttpd官网地址http://www.lighttpd.net 2.下载安装lighttpd#wget http://download.lighttpd.net/lighttpd/releases-1.原创 2013-02-03 21:16:13 · 4530 阅读 · 0 评论