⑴ 您好,我的论坛linux nginx服务器 速度有些慢,请问有优化方法吗
一、编译安装过程优化
1.减小Nginx编译后的文件大小
在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆字
节。在编译前取消Nginx的debug模式,编译完成后Nginx只有几百千字节,因此可以在编译之前,修改相关源码,取消debug模式,具体方法如
下:
在Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,在其中找到如下几行:
# debug CFLAGS=”$CFLAGS -g”
注释掉或删掉这两行,即可取消debug模式。
2.为特定的CPU指定CPU类型编译优化
在编译Nginx时,默认的GCC编译参数是“-O”,要优化GCC编译,可以使用以下两个参数:
--with-cc-opt='-O3'
--with-cpu-opt=CPU #为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
要确定CPU类型,可以通过如下命令:
[root@localhost home]#cat /proc/cpuinfo | grep "model name"
二、利用TCMalloc优化Nginx的性能
TCMalloc的全称为Thread-Caching
Malloc,是谷歌开发的开源工具“google-perftools”中的一个成员。与标准的glibc库的malloc相比,TCMalloc库在
内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低系统负载。下面简单介绍如何为Nginx添加TCMalloc
库支持。
要安装TCMalloc库,需要安装libunwind(32位操作系统不需要安装)和google-perftools两个软件包,libunwind
库为基于64位CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。下面介绍利用TCMalloc优化Nginx的具体操作过程:
1.安装libunwind库
可以从http://download.savannah.gnu.org/releases/libunwind下载相应的libunwind版本,这里下载的是libunwind-0.99-alpha.tar.gz,安装过程如下:
[root@localhost home]#tar zxvf libunwind-0.99-alpha.tar.gz [root@localhost home]# cd libunwind-0.99-alpha/ [root@localhost libunwind-0.99-alpha]#CFLAGS=-fPIC ./configure [root@localhost libunwind-0.99-alpha]#make CFLAGS=-fPIC [root@localhost libunwind-0.99-alpha]#make CFLAGS=-fPIC install
2.安装google-perftools
可以从http://google-perftools.googlecode.com下载相应的google-perftools版本,这里下载的是google-perftools-1.8.tar.gz,安装过程如下:
[root@localhost home]#tar zxvf google-perftools-1.8.tar.gz [root@localhost home]#cd google-perftools-1.8/ [root@localhost google-perftools-1.8]# ./configure [root@localhost google-perftools-1.8]#make && make install [root@localhost google-perftools-1.8]#echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf [root@localhost google-perftools-1.8]# ldconfig
至此,google-perftools安装完成。
3.重新编译Nginx
为了使Nginx支持google-perftools,需要在安装过程中添加“–with-google_perftools_mole”选项重新编译Nginx,安装代码如下:
[[email protected]]#./configure \ >--with-google_perftools_mole --with-http_stub_status_mole --prefix=/opt/nginx [root@localhost nginx-0.7.65]#make [root@localhost nginx-0.7.65]#make install
到这里Nginx安装完成。
4.为google-perftools添加线程目录
创建一个线程目录,这里将文件放在/tmp/tcmalloc下,操作如下:
[root@localhost home]#mkdir /tmp/tcmalloc [root@localhost home]#chmod 0777 /tmp/tcmalloc
5.修改Nginx主配置文件
修改nginx.conf文件,在pid这行的下面添加如下代码:
#pid logs/nginx.pid; google_perftools_profiles /tmp/tcmalloc;
接着,重启Nginx,完成google-perftools的加载。
6.验证运行状态
为了验证google-perftools已经正常加载,通过如下命令查看:
[root@ localhost home]# lsof -n | grep tcmalloc nginx 2395 nobody 9w REG 8,8 0 1599440 /tmp/tcmalloc.2395 nginx 2396 nobody 11w REG 8,8 0 1599443 /tmp/tcmalloc.2396 nginx 2397 nobody 13w REG 8,8 0 1599441 /tmp/tcmalloc.2397 nginx 2398 nobody 15w REG 8,8 0 1599442 /tmp/tcmalloc.2398
由于在Nginx配置文件中,设置worker_processes的值为4,因此开启了4个Nginx线程,每个线程会有一行记录。每个线程文件后面的数字值就是启动的Nginx的PID值。
至此,利用TCMalloc优化Nginx的操作完成。
三、Nginx内核参数优化
内核参数的优化,主要是在Linux系统中针对Nginx应用而进行的系统内核参数优化,常见的优化参数值如下。
下面给出一个优化实例以供参考:
net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_syncookies = 1 net.core.somaxconn = 262144 net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30
将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:
[root@ localhost home]#/sbin/sysctl -p
下面是对实例中选项的含义进行介绍:
net.ipv4.tcp_max_tw_buckets参数用来设定timewait的数量,默认是180000,这里设为6000。
net.ipv4.ip_local_port_range选项用来设定允许系统打开的端口范围。
net.ipv4.tcp_tw_recycle选项用于设置启用timewait快速回收。
net.ipv4.tcp_tw_reuse选项用于设置开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.tcp_syncookies选项用于设置开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies进行处理。
net.core.somaxconn选项默认值是128, 这个参数用于调节系统同时发起的tcp连接数,在高并发的请求中,默认的值可能会导致链接超时或者重传,因此,需要结合并发请求数来调节此值。
net.core.netdev_max_backlog选项表示当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目。
net.ipv4.tcp_max_orphans选项用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数
字,孤立连接将立即被复位并打印出警告信息。这个限制只是为了防止简单的DoS攻击。不能过分依靠这个限制甚至人为减小这个值,更多的情况是增加这个值。
net.ipv4.tcp_max_syn_backlog选项用于记录那些尚未收到客户端确认信息的连接请求的最大值。对于有128MB内存的系统而言,此参数的默认值是1024,对小内存的系统则是128。
net.ipv4.tcp_synack_retries参数的值决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_syn_retries选项表示在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_fin_timeout选项决定了套接字保持在FIN-WAIT-2状态的时间。默认值是60秒。正确设置这个值非常重要,有时候即使一个负载很小的Web服务器,也会出现因为大量的死套接字而产生内存溢出的风险。
net.ipv4.tcp_keepalive_time选项表示当keepalive启用的时候,TCP发送keepalive消息的频度。默认值是2(单位是小时)。
⑵ 请告诉几个比较著名的国内LINUX学习网站或者论坛
红联Linux论坛http://www.linux110.com/bbs/forumdisplay.php?fid=3
Linux入门来级教源程专题-eNet网络学院http://www.enet.com.cn/eschool/zhuanti/linux/
北京中科红旗软件技术有限公司http://www.redflag-linux.com/
⑶ 基于linux的嵌入式底层驱动开发应该怎样系统的学习注意哪些方面
1、国内抄的书内容都差不多,相互抄来抄去。
国外的书质量虽然高,但是一般人阅读速度吃不消。
不过,还是建议读国外的书(如果有时间的话),长痛不如短痛。
2、不一定非要有开发板,可以用skyeye等软件模拟。
但是,软件模拟和实体机肯定是有区别的。还是建议选一块开发板。
3、ARM板是个硬件,可以用来学习WinCE、Vxworks、Linux、uCos等等系统开发。
可以用来学习以上系统的驱动和应用开发。
Linux驱动分两块内容:学习硬件工作流程(单片机程序),
Linux驱动上层结构
(platform、mtd、字符设备、块设备、网络设备、各种总线 等上层结构)
4.前景大大滴好,但是道路十分之曲折。
要有心里准备,得有文火久煨的毅力。
⑷ linux,unix是那家公司开发的
linux是社区开发的,不属于任何公司及个人 建议你去这个网站看下红联Linux论坛制作的普及Linux书籍 书名:Linux菜鸟过关 Linux教程下载
什么是Linux
相信了解一些IT知识的人都听过Linux这个名词。
Linux操作系统(Linux),是一种计算机操作系统。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。
Linux内核最初是为英特尔386微处理器设计的。现在Linux内核支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备。
在开始的时候,Linux只是个人狂热爱好的一种产物。但是现在,Linux已经成为了一种受到广泛关注和支持的一种操作系统。包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。很多人认为,和其他的商用Unix系统以及微软 Windows相比,作为自由软件的Linux具有低成本,安全性高,更加可信赖的优势。
Linux内核最初只是由芬兰人林纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。最初的设想中,Linux是一种类似Minix这样的一种操作系统。Linux的第一个版本在1991年9月被发布在Internet上,随后在10月份第二个版本就发布了。
Linux的历史是和GNU紧密联系在一起的。从1983年开始的GNU计划致力于开发一个自由并且完整的类Unix操作系统,包括软件开发工具和各种应用程序。到1991年Linux内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发。在Linus Torvalds和其他开发人员的努力下,GNU组件可以运行于Linux内核之上。整个内核是基于GNU通用公共许可,也就是GPL(General Pubic License)的,但是Linux内核并不是GNU 计划的一部分。
Linux的标志和吉祥物是一只名字叫做Tux的企鹅,Linux的注册商标是Linus Torvalds所有的。这是由于在1996年,一个名字叫做William R. Della Croce的律师开始向各个Linux发布商发信,声明他拥有Linux商标的所有权,并且要求各个发布商支付版税,这些发行商集体进行上诉,要求将该注册商标重新分配给Linus Torvalds。
Linux的某些版本是不需要安装就能使用的版本,他们称为LiveCD。
红联Linux论坛制作的普及Linux书籍 书名:Linux菜鸟过关 Linux教程下载
申请Ubuntu光盘说明
Ubuntu 是一个完全基于 Linux 的操作系统,它不但免费,而且有专业人员和业余爱好者共同为其提供技术支持。目前它在世界上包括中国在内都有庞大的用户群。
申请Ubuntu光盘图解说明下载:ftp://FTP_hllinux:[email protected]/fc/squbuntulinux.zip
无法下载请这边下载:http://www.linuxdiyf.com/bbs/thread-53625-1-1.html
下面是语言表达。
下面我们开始申请了:
登陆 Ubuntu 官方光盘申请网站 https://shipit.ubuntu.com/ 。
虽然是英文的,但是我想大家应该都能看懂滴,因为那两个大大的单词“download”和“request”不会有人不知道什么意思。还有最上面那句话“Ubuntu is available free of charge and we can send you CDs of the latest version (7.04) with no extra cost”-------光盘免费的,看到了吧?呵呵
看到首页上的两个醒目的链接了吧?一个说“I want to download Ubuntu 7.04 (Feisty Fawn)”,就是下载7.04的镜像包了。另一个说“I want to request Ubuntu 7.04 (Feisty Fawn)”,就是申请免费光盘了。
我们今天的主题是申请免费光盘,不涉及下载镜像包安装的问题(因为用光盘安装总比用包安装方便,再说留着光盘在手里也不是什么坏事,对装win+linux双系统的朋友来说,以后重装windows时再也不怕它不讲理的把你的 grub 引导菜单给kill掉了 )。就不管那么多了下面我们点击“I want to request Ubuntu 7.04 (Feisty Fawn)”开始申请免费光盘。
它让我们输入 Ubuntu 的通行证帐号登陆。Ubuntu的帐号是用你自己的E-mai地址注册的。如果已经注册过那就可以直接登陆了,如果没有的话我们现场注册一个帐号。呵呵。
点击链接“create a new account”
在 E-mail address:框中输入你要注册的 E-mail 地址,点“Register”。
此时一封激活信已经发到了你的邮箱里,打开你的邮箱激活你的帐号吧。激活信的“发件人”为“Launchpad” ,“主题”为“Finish your Launchpad registration”。
把激活信里的激活链接复制到浏览器中打开。
上面的东东填写完后,点击“Continue”继续。
这时候我们再次点击“I want to request Ubuntu 7.04 (Feisty Fawn)”,又来到登陆画面,输入我们刚才注册的 E-mail 帐号和密码,点击“Log in”。
请的光盘类型有64位PC的和普通PC的,一次最多可以申请3张盘。不过去年一次最多可以申请10张的哦(包括5张普通PC的,3张64位PC的和两张用于 MAC 机的),不知道现在为什么没有 MAC 的了。呵呵。
最后重点说一下地址的写法,因为英文的地址和中文的地址写法是不一样的,所以一定要注意这点,如果用英文填写的话,一定要按照英文地址的格式填写。
不过英文不好填写的话,用拼音写地址也可以的。呵呵。因为国内的邮局里面初中毕业的MM也不是没有。
用拼音写的话,就可以直接按照中国的地址写法写了,×××省×××市×××县×××镇等等。还有用拼音写的地址也不用担心 Ubuntu 的人看不懂,他们会照样子写到你的邮包上的,放心吧,你会收到的。
最后说一下大家关心的时间问题,Ubuntu官方的说法是最多10周就能收到(这是针对全世界的)。其实也要不了那么久,如果是省会以及其它的大城市,最多一两个星期就收到了,小一点的地方可能要稍微久一点。
光盘是直接从荷兰邮寄过来的,邮资是 5 欧元,荷兰人帮掏的,放心拉。呵呵。
⑸ 中国有哪些专业的linux网站
您安装一个现成的Linux,一边研究一边上网学,最好。
系统自带的Linux网页可以引导你找到你要的学习世界。