当前位置:  建站>其它
本页文章导读:
    ▪高并发下的 Nginx 优化方案       就是说,很多影响Nginx行为的参数其默认值并不是完全适合高并发的情况。我们也要考虑Nginx运行所在的平台,优化我们的操作系统当有一些限制的时候。 我想你一定猜到了windows不在其.........
    ▪使用linux命令搜集      1 xentop,top 查看内存使用状况 2 :g/567/s//ZZZ/g 替换命令:意思是将每一行中的567替换为ZZZ。在脚本编写中常用。在脚本中使用时要退出编辑模式。注意此命令前面有冒号“:” 3&nb.........
    ▪JVM 配置参数学习与研究      跟踪类加载器约束的相关信息 JVM服务调优实战 服务器:8 cup, 8G mem。 e.g. java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0。 调优方案。堆设置 -Xmx3550m.........

[1]高并发下的 Nginx 优化方案
    来源: 互联网  发布时间: 2013-11-02

我已经谈过一些关于Nginx的常见问题,其中有一些是关于如何优化Nginx,很多Nginx新用户是从Apache迁移过来的,因些他们过去常常调整配置和执行魔术操作来确保服务器高效运行。

我有一些坏消息要告诉你,你不能像Apache一样优化Nginx。它没有魔术配置来减半负载或是让PHP运行速度加快一倍。高兴的是,Nginx已经优化的非常好了,当你决定使用Nginx并用apt-get,yum或是make命令安装的时候它就已经进行了最佳优化。 (注意那些库经常过期,Wiki的安装页面上通常有最新的库)

就是说,很多影响Nginx行为的参数其默认值并不是完全适合高并发的情况。我们也要考虑Nginx运行所在的平台,优化我们的操作系统当有一些限制的时候。

总的来说,我们无法优化单个连接的负载时间,但是我们可以确保Nginx的高并发处理环境。当然, 对于高并发我指的是每秒数百个请求连接,大多数人不需要了解这些。假如你太好奇或是想知道那就继续读吧。

首先,我们需要认识到Nginx几乎可能需要在所有的平台上使用,MacOS,Linux,FreeBSD,Solaris,Windows甚至一些更深奥的系统。他们大部分(这么翻译好些)实现了高性能的基于事件的polling方法,不幸的是Nginx的只支持其中4个系统。在四个系统中我倾向于FreeBSD,但你不会看到太大的性能差异,所以选择的操作系统让你用起来顺手,比选择最优化的操作系统更重要。

我想你一定猜到了windows不在其中。 Windows上的nginx确实没有什么理由让你值得使用。 Windows有自己的一套处理事件polling。 所以nginx的作者选择了不支持。 因此默认的还是使用select() 这种不是很高效而且性能会下降很多的方式。(初次翻译不是很好希望多多指教)

第二个最大的限制, 也是大多数人会遇到的问题是和操作系统相关的。 打开一个

    
[2]使用linux命令搜集
    来源: 互联网  发布时间: 2013-11-02
1 xentop,top 查看内存使用状况
2 :g/567/s//ZZZ/g 替换命令:意思是将每一行中的567替换为ZZZ。在脚本编写中常用。在脚本中使用时要退出编辑模式。注意此命令前面有冒号“:”
3 tar –xf 文件名,tar zxvf 文件名 用于linux系统下,可以解压后缀为tar和tar.gz的压缩包
4 ps -ef,ps -ef|grep -i java 意思是查看java进程,java前面的-i可以不加
5 kill -9 进程号 比如某进程序号为1234,使用kill 1234就可以终止此进程
6 wasHome/AppServer/bin/stopServer.sh server1 -username *** -password *** "终止was服务命令。也可以进入目录wasHome/AppServer/bin/下,使用命令 ./stopServer.sh server1 –username XXX –password XXX。相应的,启动was服务命令就是把stop改为start就可以了。使用此命令时注意字母的大小写
"
7 ssh-keygen -t rsa 生成公钥和私钥命令。用于批量上传或下载之前配置源/目标服务器,使批量传送不需要重复输入密码
8 ll 查看所有文件的读、写、执行权限
9 chmod 使用者 权限 文件名 "授权/削权命令。例如chmod go-rw 123.data,意思是取消群组和其他人读写123.data的权限。其中:rwx也可以用数字来代替r - 4,w - 2,x - 1,“-”的权限值是0。例如chmod 777 123.data,意思是授予所有人读、写、执行权限
"
10 find / -name 文件名 查找文件
11 uname -a,cat /etc/SuSE-release,cat /etc/issue 查看Linux系统属性
12 ssh -P 10022 IP Linux和UVP系统下远程登录命令
13 curlftpfs -o codepage=utf8 ftp://user:password@IP /home/partimag/ Linux系统下挂载镜像(非iso镜像)命令。其中-o是小写字母而不是数字0,user和password通常为admin,IP地址为镜像所在的运维机的地址
14 du -h --max-depth=1 / 显示目录的容量。--max-depth=1的意思是查询的最大深度为1,即至查看一层目录。/是指在跟目录下查询
15 virsh attach/detach-device 虚拟机名 *.xml 在不关闭虚拟机的情况下挂载/卸载磁盘或iso文件。attach为挂载,detach为卸载;虚拟机名就是想要挂载/卸载磁盘或iso文件的虚拟机;*.xml中编辑的内容是挂载/卸载磁盘或iso文件的代码。Windows系统中挂载磁盘的话在磁盘管理中挂载就可以了,挂载cdrom的话要重启虚拟机才能识别到;linux系统中挂载磁盘的话正常挂载就行了,挂载cdrom的话在cdrom中可以看到所挂载的iso文件
16 lftp.sh  ftp://admin:admin@10.95.152.93:52121//VRP/VRP_V500R011C01B270_to_ATN/3 在lftp.sh所在的路径路径下使用此命令。ftp的应户名和密码是Admin,152.93是ftp服务器的IP,52121是ftp端口。后面的部分就是要下载的东东的在ftp上的路径。
17 dd if=/usr/vm2/vL10t133052.img of=/usr/vm4/a.img bs=1M oflag=direct 比cp速度更快的复制命令
18 yast2 ntp-client linux时间同步,删除默认server,添加新server:172.19.1.63或者64
19 xenstore-ls -f | grep pvdriver 查看pvdriver版本
20 "curlftpfs –o codepage=utf8 ftp://admin:admin@IP /home/partimag
给网卡端口eth0配置一个临时IP:ifconfig eth0 IP
关闭eth0:ip link set eth0 down
启动eth0:ip link set eth0 up
配置子网掩码:ifconfig eth0 ip netmask ip
配置网关:route add default gw ip
" 搭建apache-ftpserver的相关命令
21 :set nu linux下编辑文件时,显示“第几行”
22 yast2 ntp-client 设置linux时间自动同步(timeserver:szxntp01-in.huawei.com/172.19.1.63)
23 rename 152152 130100 /usr/vm6/* 替换命令:意思是将linux系统路径/usr/vm6/下所有文件名的“152152”的部分改成“130100”
24 把/etc/passwd 文件和/etc/shadow影子文件里的aaa用户的ID值改成0即可  suse系统下给新建的用户授予管理员权限(此方法未验证)
25 xm li|awk 'NR>2 {printf "%s\t%s\n","start ",$1;}' | virsh 启动所有虚拟机
26 xm li|awk 'NR>2 {printf "%s\t%s\n","shutdown ",$1;}' | virsh 关闭所有虚拟机
27 xm li|awk 'NR>2 {printf "%s\t%s\n","undefine ",$1;}' | virsh 取消定义所有虚拟机
28 cat /proc/cpuinfo 查看CPU
29 uvplog -a 命令会自动收集uvp的日志,最后在当前目录下打包生成一个压缩包,压缩包命名类似 uvplog2012xxxxxx_all.tar.gz
30 shutdown -h now 关闭UVP物理机
31 badblocks -s -v /dev/sda linux的硬盘扫描命令。此命令的意思是扫描/dev/sda是否有坏道
32 "压:tar -czf xxx.tar.gz zzz.img
解:tar -xvf xxx.tar.gz" 压缩和解压缩文件。可以把文件压缩到很小。
33 sudo ls "usr"/* 列出目录usr下的所有文件。当权限无法打开某文件夹是需要用此命令,root用户不需要
34 sudo du -sh "usr" 显示目录usr下的所有文件的总大小
35 vi /etc/profile,将“TMOUT=”后面的数字改为0 (通常默认为TMOUT=60,单位是秒)这样设置后,无需重启系统,只要重新登录就不会再出现登陆超时而自动注销
作者:liuaibing 发表于2013-1-30 11:43:52 原文链接
阅读:0 评论:0 查看评论

    
[3]JVM 配置参数学习与研究
    来源: 互联网  发布时间: 2013-11-02
跟踪类加载器约束的相关信息 JVM服务调优实战 服务器:8 cup, 8G mem。 e.g. java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0。 调优方案。堆设置
  • -Xmx3550m:设置JVM最大堆内存 为3550M。
  • -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
  • -Xss128k:设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
  • -Xmn2g:设置堆内存年轻代 大小为2G。整个堆内存大小 = 年轻代大小 + 年老代大小 + 持久代大小 。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
  • -XX:PermSize=256M:设置堆内存持久代 初始值为256M。(貌似是Eclipse等IDE的初始化参数)
  • -XX:MaxNewSize=size:新生成的对象能占用内存的最大值。
  • -XX:MaxPermSize=512M:设置持久代最大值为512M。
  • -XX:NewRatio=4:设置堆内存年轻代(包括Eden和两个Survivor区)与堆内存年老代的比值(除去持久代) 。设置为4,则年轻代所占与年老代所占的比值为1:4。
  • -XX:SurvivorRatio=4:设置堆内存年轻代中Eden区与Survivor区大小的比值 。设置为4,则两个Survivor区(JVM堆内存年轻代中默认有2个Survivor区)与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6。
  • -XX:MaxTenuringThreshold=7:表示一个对象如果在救助空间(Survivor区)移动7次还没有被回收就放入年老代。
    • 如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代,对于年老代比较多的应用,这样做可以提高效率。
    • 如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代即被回收的概率。
回收器选择

JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器。

默认情况下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行智能判断。

串行收集器
  • -XX:+UseSerialGC:设置串行收集器
并行收集器(吞吐量优先)
  • -XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。
  • -XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。
  • -XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
  • -XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间(单位毫秒),如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。
  • -XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时间或者收集频率等。
    • 此参数建议使用并行收集器时,一直打开。
并发收集器(响应时间优先)
  • -XX:+UseParNewGC:设置年轻代为并发收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
    • CMS,全称Concurrent Low Pause Collector,是jdk1.4后期版本开始引入的新gc算法,在jdk5和jdk6中得到了进一步改进,它的主要适合场景是对响应时间的重要性需求大于对吞吐量的要求,能够承受垃圾回收线程和应用线程共享处理器资源,并且应用中存在比较多的长生命周期的对象的应用。CMS是用于对tenured generation的回收,也就是年老代的回收,目标是尽量减少应用的暂停时间,减少FullGC发生的几率,利用和应用程序线程并发的垃圾回收线程来标记清除年老代。
  • -XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了。所以,此时年轻代大小最好用-Xmn设置。
  • -XX:CMSFullGCsBeforeCompaction=:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此参数设置运行次FullGC以后对内存空间进行压缩、整理。
  • -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除内存碎片。
  • -XX:+CMSIncrementalMode:设置为增量收集模式。一般适用于单CPU情况。
  • -XX:CMSInitiatingOccupancyFraction=70:表示年老代空间到70%时就开始执行CMS,确保年老代有足够的空间接纳来自年轻代的对象。

注:如果使用 throughput collector 和 concurrent low pause collector 这两种垃圾收集器,需要适当的挺高内存大小,为多线程做准备。

其它
  • -XX:+ScavengeBeforeFullGC:新生代GC优先于Full GC执行。
  • -XX:-DisableExplicitGC:禁止调用System.gc(),但JVM的gc仍然有效。
  • -XX:+MaxFDLimit:最大化文件描述符的数量限制。
  • -XX:+UseThreadPriorities:启用本地线程优先级API,即使 java.lang.Thread.setPriority() 生效,反之无效。
  • -XX:SoftRefLRUPolicyMSPerMB=0:“软引用”的对象在最后一次
        
最新技术文章:
▪linux内核中的信号机制--信号处理    ▪windows忘记密码    ▪常见的10种“瓶颈”
▪详解Linux内存使用信息    ▪「学习笔记——Linux」Linux软件管理(RPM,Dpkg,APT)...    ▪Shell(Bash)编程实例之获取某个文件夹下的所有...
▪Dynamics CRM 2011编程系列(49):FetchExpression(一)...    ▪Linux个人磁盘分区方案(20G)    ▪细谈MySQL配置的优化
▪Web访问异常简单报警    ▪【linux环境配置】linux改成root用户的命令    ▪IIS7.0未能加载文件或程序集 iis7站长之家
▪「学习笔记——Linux」Linux账号管理与ACL权限...    ▪bash参考手册之四(shell内建命令)    ▪集线器、交换机、路由器、中继器及网关、网...
▪【学习笔记——Linux】Linux下正确关机方法    ▪【学习笔记——Linux】Linux磁盘和文件系统管...    ▪实验一 SCVMM安装
▪Tomcat7和mysql连接池的配置方法和测试(dbcp方...    ▪Tomcat7和mysql连接池的配置方法和测试(dbcp方...    ▪linux内核中的信号机制--信号发送
▪轻松搭建自己的Linux发行版本    ▪bash参考手册之三(基本的Shell特性)续九    ▪fedora18无线用pppoe拨号上网
▪高并发下的 Nginx 优化方案    ▪使用linux命令搜集    ▪JVM 配置参数学习与研究
▪修改CentOS的yum源为163    ▪CentOS下源码安装php+apache+mysql    ▪Redis监控方案
▪linux下压缩工具的区分-gzip,bzip2,tar    ▪基于apache搭建svn    ▪Windows下查看占用端口的程序
▪Nginx+CI 出现404错误    ▪tcpdump抓包工具的高级应用    ▪Windows socket之IOCP实例----IOCP开发驾照理论考试...
▪Web访问异常简单报警    ▪【linux环境配置】linux改成root用户的命令    ▪IIS7.0未能加载文件或程序集
▪linux下获得root权限    ▪IIS6 配置ASP.NET网站伪静态    ▪服务器更换硬盘后Oracle不能连接问题的解决
▪在源Exchange Mailbox 服务器宕机的情况下将用户...    ▪Ubuntu下WordPress更新固定链接方法总结    ▪如何在suse linux 建立共享文件夹
▪linux ntp 时间服务器及客户端安装配置    ▪Thunderbird设置邮件回复时自动签名和邮件引用...    ▪Resin Windows一键部署应用脚本BAT
▪认识Linux系统服务(鸟哥18章笔记)    ▪Vmware中的网络工作模式    ▪Cygwin + NS2 + Win XP 安装方法 网上 唯一 有效版...
▪linux内核中的文件描述符(一)--基础知识简介    ▪64位系统DOSBox 下面nasm编译程序出现"Unable to ope...    ▪Linux 自动上传备份文件
▪Linux下MySQL配置文件my.ini位置    ▪Memcached的管理    ▪linux内核中的copy_to_user和copy_from_user(二)—图解...
▪jdk1.7和tomcat7安装过程    ▪虚拟项目学习git/github原理与基本操作9    ▪以wifi为媒介,linux系统与android设备交互
▪find和grep命令    ▪linux编程实例1    ▪Dynamics CRM 2011编程系列(48): WCF Service 和 Web...
▪vmware 下的linux操作系统 共享windows网络    ▪一次在安装完VMware tools后,系统无法进入图形...    ▪Ubuntu 12.04重装手记
▪Linux常见的登录文件档案名称    ▪虚拟项目学习git/github原理与基本操作2    ▪安装MyEclipse6.5提示输入proxy ip和端口号问题解...
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3