当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪IIS假死的解决方法 缩短IIS应用池回收时间来实现减少IIS假死       IIS日志:   应用程序:ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' 报告它自身有问题,原因如下: 'ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。'。   关于 server 2003+IIS6 .........
    ▪使用nginx来负载均衡 本文在window与linux下配置nginx实现负载       实现网站负载有两种办法,一种是购买硬件来实现,比如是硬件F5再到Citrix Netscalar,这些设备都几十万,不是一般人玩的,另一种是使用软件来实现,比如nginx,squid这类有反向代理功能的软.........
    ▪windows使用nginx实现网站负载均衡测试实例       如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台服务器来做负载吧。做网站负载可以买硬件设备.........

[1]IIS假死的解决方法 缩短IIS应用池回收时间来实现减少IIS假死
    来源: 互联网  发布时间: 2013-12-24
IIS日志:
  应用程序:ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' 报告它自身有问题,原因如下: 'ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。'。
  关于 server 2003+IIS6 出现 'ASP 不正常,因为执行请求的 100% 被挂起
现像如下:
  站点无法打开,或者打开很慢.HTML可以打开.重新启动或者回收应用程序池可恢复.但过一段时间又会出现
日志里会有:
  ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' reported itself as unhealthy for the following reason: 'ASP unhealthy because 100% of executing requests are hung and 6% of the request queue is full.'.
或者:
  ISAPI 'C:\WINDOWS\system32\inetsrv\asp.dll' 报告它自身有问题,原因如下: 'ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。'。
解决方法:
  1.asp是否正确映射到 'C:\WINDOWS\system32\inetsrv\asp.dll'
  2.一般来讲,是由于在同属IIS的应用程序池出现了某个站ASP代码错误所致,使得内存耗尽,检查代码本身的问题.可以隔离到单独应用程序池调试
  3、减少应用程序池回收时间。默认为:1740。。可设为120(每2小时)
IIS假死的原因:
  打开IIS 你就会看到应用程序池,默认只有一个应用程序池,查看应用程序池的属性,会发现他的回收时间,默认多达,1740分钟,就是说,需要在1740分钟后才回收此应用程序池,如果在这个时间内,达到请求的最高限制,那么就会出现ASP假死的情况,这个就是大型网站出现假死的情况,反而,小型网站确不会出现这样的情况,因为他请求少,流量少,还没达到限制数量。当然要看你的服务器上网站数目而定。
以下是解决方法:
  资料一
  单个网站解决方法:
  把应用程序池回收时间缩短到300-600分钟,其间回收过程中,需要占用一点CPU资源,没办法,为了稳定性,再把回收时间设为凌晨5点。
多网站解决方法:
  视服务器网站的多少,新建多个应用程序池,把每个池回收时间缩小到 300分钟,然后再分配每个池10个网站左右(这个分配是要求你的网站访问量所定)如果某个网站,访问量大,就单独给他一个程序池,但是这样做的后果就是需要大内存,一个池现在占用我120M内存左右,反正内存大,没关系,
  那么多网站如何分配应用程序池,打开IIS--查看你要分配的网站属性,查看主目录--在下面你就会看到应用程序池了,分配一个就行了。
资料二
  大家在使用iis6时..如果装了动网论坛.肯定有出现过iis6假死现像..就是asp网页打开慢..但是iis却是正常的..静态网页打开速度一样..这时候..我一直是重启的方法..查了官方的资料结果没有...据官方资料说..win2003很快就要打这个补丁了..是iis6对access驱动支持不理像..也算是一个 bug吧..由于我的服务器虚拟主机多..而且大多支持asp..如果一旦假死就无法运行..在多方面的资料查找下..找到了一个比较简单的方法..具体我测试是通过了..iis6自带数据应用程序池..现在就利用他来解决假死..
  首先把bbs设一个单独的目录..然后点击应用程序池..新建应用程序池.输入应用程序池id..
  然后把bbs的虚拟目录下面的.就用程序池..选择刚才新建的应用程序池...
  然后再回到刚才设好的应用程序池...点击..属性...把回收工作进程数(分钟)及回收工作进程数还有在下列时间回收时间进程勾上..然后在下列时间回收程序池里左边添加..选择一个时间..一般来说..网站到凌晨3点的时候.基本人都很少了..这时回收一下bbs的进程数..就可以解决了iis假死的现像..
  当然还可以配置其他信息..比如说iis6的用户名.. 我们可以打开计算机管理..然后打开计算机用户管理..添加一个用户..设置好后..在应用程序池里面..标识..把添加的用户放上去..用用户来测试回收的进程..当然还有..其他配置..其实很简单..只要好好看一下..就能明白意思...
  也可以借助专用的工具来回收应用程序池..这样方便而且快捷..iis的备份.虚拟主机ip的统一修改及端口访问的ip记录..用批处理是一个很简单又方便的方法.所以.把一台服务器做的安全..并不是哪么容易的事..特别是iis..经常去官方网站搜索资料是一个好习惯..还有就是经常性的访问日志..及注册表的用户还有加载运行的程序. 及服务也是一个好方法.

    
[2]使用nginx来负载均衡 本文在window与linux下配置nginx实现负载
    来源: 互联网  发布时间: 2013-12-24

实现网站负载有两种办法,一种是购买硬件来实现,比如是硬件F5再到Citrix Netscalar,这些设备都几十万,不是一般人玩的,另一种是使用软件来实现,比如nginx,squid这类有反向代理功能的软件,本文就nginx安装实现负载。

首先是windows系统,这里建议使用window 2003企业版,而不要作用win7(太新了,我遇到无法启动nginx的问题)。要说的是,在windows下配置安装nginx还是很容易的,少了 linux下下载tar再配置编译参数等等步骤,我们只要从下面的地址下载相应的zip包(大约750kb)即可,地址如下:

      http://sysoev.ru/nginx/nginx-0.8.21.zip


      需要说明的是这个下载包是nginx 0.8.21开发版,换句话说其只能用于搭建测试环境等用途的,不能用于实际的生产环境(受限于windows文件句柄数限制)。

      下载并将该包中的文件解压到c盘上,为了配置使用方便,我将其解压后的文件夹名称从“nginx-0.8.19”改为"nginx”,这样我们只要将要负载均衡的站点在iis中设置好之后,将相应的链接地址放到nginx的相应配置文件中即可,这里我们打开C:\nginx\conf \nginx.conf文件,将下面的内容放到该文件的“server { ”上方行处:

upstream  mylocalsite {  
     server   10.0.2.137:8088;
     server   10.0.2.137:8089; 

 

      因为nginx无法运行动态脚本,所以这里要使用proxy_pass属性进行代理,所以找到该配置文件的如下内容:

location / {
           root   html;
           index  index.html index.htm;
}

 

      修改其内容如下:

location / {
            proxy_pass http://mylocalsite;

 

       修改完之后,还要修改一下server的侦听端口,原内容如下:

server {
      listen       80;
      server_name  localhost; 
      …… 

 

      修改完后的内容如下:    

 server {
        listen       8086;
        server_name  10.0.2.136; 
        …… 

   

      这样,nginx就会在启动之后开始侦听本地IP(10.0.2.136)的8086端口请求,然后将其请求转向到mylocalsite 中所指定的两个iis站点,并将执行的结果转发给客户端。如果一切配置正确,这时可以运行 c:/nginx/nginx.exe (或在cmd下运行“start nginx”),就可以在任务管理器中看到一个nginx进程启动了。(注:如果配置文件有错误,可以到C:\nginx\logs\error.log 查看错误日志,进一步排错)。

      注: 关闭ngnix的命令: nginx -s stop

             配置文件ngnix.conf正确性判断的命令: nginx -t 

 

       当然Nginx 负载均衡的功能也是很强的,并且其一般作为七层负载均衡(应用协议层)。下面就其upstream所支持的四个常用设置进行说明: 

1)、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down掉,能自动剔除。
2)、weight :指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、 ip_hash :每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、 fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。 
4)、url_hash(第三方) 

    

     按上面的说明,可以将之前我们的upstream做如下修改:

upstream  mylocalsite {  
     server   10.0.2.137:8088 weight=2;
     server   10.0.2.137:8089 weight=1; 
}

 

     这个当来了三个http请求时,其中的两个会被分配到10.0.2.137:8088 上,一个分配到10.0.2.137:8089 。当然一开始可以其分摊的请求可以不是太严格按其设置,但当请求数多了之后,基本上就接近于我们分指派的权值了。当然就负载均衡的算法而言,使用 weight只是其中的一种,而经常使用的还有许多,比如lvs就在其内部实现了多种的负载均衡算法,可以根据用户的实际环境进行设置布署。。当然就目前而言,nginx的算法相比较还是少了许多,呵呵。  

     可以说在windows下安装配置还是很方便的,但如果使用loadrunner做并发测试时,就会发现其logs/error.log就会报如下错误:

     maximum number of descriptors supported by select() is 1024 while connecting to upstream

     我曾经在网上查过解决方案,包括修改配置文件的worker_connections ,如下:       

 worker_rlimit_nofile 20240; 
     events {
         #use epoll;//linux 下使用
          worker_connections  20240;
     } 

    

     但依旧不能将文件句柄数扩充到20240,还是报1024最大句柄数错误。最后实在没办法了,只得开始尝试在linux下安装配置nginx。也就引发了下面的内容。  

     其实在网上有关介绍如何在linux下安装nginx的要比windows下的要多得多,必定这是‘本家'吧。 

因为之前网管只在虚拟机上安装了CentOS5,所以只能就尝试在该linux分支版本下安装了。好在虚拟机已安装完了,剩下的工作并不太多。

     首先需要以root身份登陆系统,然后切换身份为超级管理员:      

    

      然后进入到src目前下,并在当前目录下download nginx.tar.gz包    

    cd /usr/src      # 将文件下载到这个目录
     wget http://sysoev.ru /nginx/nginx-0.7.62.tar.gz# 下载安装包
     tar xzvf nginx- 0.6.34.tar.gz   #解压

     

      如果下载的nginx 中默认可能没有 rewirte规则,因此需要下载pcre包的扩展来实现这个功能:   

      wget http://syslab.comsenz.com /downloads/linux/pcre-7.8.tar.bz2    # 下载pcre
      tar xjvf pcre- 7.8.tar.bz2                   # 解压pcre

    

      下面编译安装pcre      

 cd /usr/src/pcre-7.8;
 ./configure --prefix=/usr/local/pcre --enable-utf8 --enable-unicode-properties 

 

       下面编译安装nginx     

 

     开始配置要编译的参数(注:内容较长,容易输错。具体参数设置参见http://wiki.codemongers.com/NginxChsInstall)

    ./configure --prefix=/usr/local/nginx  --sbin-path=/usr/local/nginx/sbin/nginx  --conf-path=/usr/local/nginx/conf/nginx.conf
--error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log
--pid-path=/usr/local/nginx/var/nginx.pid --lock-path=/usr/local/nginx/var/nginx.lock
--http-client-body-temp-path=/dev/shm/nginx_temp/client_body --http-proxy-temp-path=/dev/shm/nginx_temp/proxy
--http-fastcgi-temp-path=/dev/shm/nginx_temp/fastcgi
--user=www --group=www --with-cpu-opt=pentium4 --without-select_module --without-poll_module
--with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module
--without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_memcached_module
--without-http_map_module" #如要取消ssl可去掉该项
--without-mail_pop3_module --without-mail_imap_modul --without-mail_smtp_module --with-pcre=/usr/local/pcre/lib

 

     接下来就开始编译生成相应的文件了:

   make
   make install 

 

     然后/dev/shm 也就是内存中,建立一个nginx_temp文件夹

 

   接着创建www用户和组,以及其使用的目录:    

   /usr/sbin/groupadd www -g 48 
   /usr/sbin/useradd -u 48 -g www www 
   mkdir -p /data0/vshare/htdocs 
   chmod +w /data0/vshare/htdocs 
   chown -R www:www /data0/vshare/htdocs 

 

   这时可以扩充一下文件句柄数(windows下就没这么容易扩展了,哎)   

  

   到这里,我们就可以使用linux下的vi编辑器编辑一下:

   cd /usr/src/nginx-0.7.62/conf/ 
   vi nginx.conf

 

   将之前在window下的修改内容替换(按下insert键进入到编辑模式)到当前的文件中,当修改完成了,按冒号(":")切换到命令模式下,然后敲入 “wq”,保存并退出。(强制退出(不保存)的话,输入q!,然后回车)

     注:

events { 
            use epoll; 
            worker_connections  20240;
     }

      注:use epoll; //linux下使用,更多内容参见NginxChsOptimizations
       

     这样就可以运行nginx了:    

  

     启动完成后,可以通过如下指令查看其在内存中的运行信息:

   # ps aux | egrep '(PID|nginx)'

   

 

    这样当我们再使用loadrunner运行时,就可以看到error.log中就不再报那个恼人的“1024错误了”。 

    当然在nginx中,还支持文件缓存,以便于将那些静态文件缓存到本地的nginx服务器上,只不过要修改一下其config文件配置,如下:

    vi nginx.conf

    在文件中的相应节点处输入如下内容:   

location ~ .*\. (gif|jpg|jpeg|png|bmp|swf|js|html|htm|css)$ {        #指定缓存文件类型
       expires 7d;      # 设置浏览器过期时间7天
       root data/nginx_cache/iis;          #静态文件根目录目录(必须对应proxy_temp_path)
       proxy_store on;        #开启缓存机制
       proxy_store_access user:rw group:rw all:rw;       # 缓存读写规则
       proxy_temp_path data/nginx_cache/iis;            #存放静态文件的缓存目录
   #    include proxy.conf;          # 外联proxy理的详细配置如 proxy_set_header, client_max_body_size .
        if (!-e $request_filename) { 
              proxy_pass http://10.0.2.136;/
        }
   }

 

     这样就会在data/nginx_cache/iis目前下生成相应的gif,jpg等文件的临时信息,当客户端请求到来时,就会从该目录中检索相应文件绑定之后返回给客户端,以减轻iis服务器和网络带宽的压力。  

    最后附上一个我在那台Centos上的配置文件,大家可以对比参照一下,因为nginx本身提供的配置结点信息过多,更多信息可以参见这篇文章。  

    相关链接如下:

        张宴 搭建胜过Apache十倍的Web服务器(第5版)[原创]

        守住每一天(网名)       nginx反向代理配置及优化

 

      原文链接: http://www.cnblogs.com/daizhj/archive/2009/11/03/1595292.html

      作者: daizhj, 代震军

      Tags: nginx,负载均衡


    
[3]windows使用nginx实现网站负载均衡测试实例
    来源: 互联网  发布时间: 2013-12-24

如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台服务器来做负载吧。做网站负载可以买硬件设备来实现,比如F5,不过价格就几十万到上百万,够贵,本文介绍做网站负载的软件是免费的,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是非常优秀的,下面介绍做负载测试吧。
环境:
(2台服务器)
第一台:
 CPU:Inter(R) Pentium(R) 4 CPU 2.8G
 内存:1G
 系统:windows 7
 IIS: IIS 7
 nginx:nginx/Windows-0.8.22
 IP:172.10.1.97
 环境:本地
第二台:
 CPU:Inter(R) Pentium(R) 4 CPU 3.0G
 内存:2G
 系统:windows Server 2003
 IIS: IIS 6
 IP:172.10.1.236
 环境:远程

说明:
 本次测试,软件nginx放在本地(172.10.1.97),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用 80端口,因为等下nginx软件要使用80这个端口。
下载nginx的地址如下:
nginx下载:http://nginx.net/
本次测试使用的版本下载:nginx/Windows-0.8.22

下载解压到C:,把目录名改成nginx

好,下面进入实践:

第一:

        在本地(172.10.1.97)这台服务器IIS创建一个网站,使用端口为808,如下图:

IIS 网站绑定设置图

第二:

      在远程172.10.1.236的IIS创建一个网站,使用端口为80,如下图:

远程IIS绑定设置图

第三:

好了,以上已经设置好两台服务器的IIS了,下面配置nginx软件来实现网站负载均衡,打开如下文件:

C:\nginx\conf\nginx.conf

1、找到内容server {

在这上面加入如下内容:

upstream  xueit.com { 
  server   172.10.1.97:808;
  server   172.10.1.236:80;
    }

(这是负载切换使用的服务器网站IP)

2、找到location / {
            root   html;
            index  index.html index.htm;
        }

把内容更改如下:

location / {
            proxy_pass http://xueit.com;
            proxy_redirect default;
        }

3、找到server {
        listen       80;
        server_name  localhost;

把内容改成如下:

server {
        listen       80;
        server_name  172.10.1.97;

(这是监听访问域名绑定那台服务器80端口的请求)

好,在这里就这么简单配置好了,下面看下以上3步配置的图:

负载配置图

第四:

      都配置好了,下面启动nginx这软件

      进入命令提示符CMD,进入c:\nginx>,输入nginx命令,如下图:

启动nginx

这时候,系统进程有两个nginx.exe进程,如下图:

系统nginx进程

停止nginx运行输入nginx -s stop 即可

第五:

       经过以上的配置,现在我们看下负载效果:

       在本地(172.10.1.97)这服务器打开IE,输入:http://172.10.1.97

       第一次打开网站的结果图:

      

第一次运行网站图

        再刷新一下网页,出现的结果图:

   

再次访问网站图

很好,网站已经负载成功。

经过这次测试,实现网站负载再也不是难事了。也不用购买非常贵的硬件设备了。网上介绍说nginx软件可以处理并发上万,所以绝对是个非常不错的选择。

如果网站访问量非常大,可以专门用一台服务器跑nginx,其它服务器跑网站程序(几台服务器的程序都是一样的),这样负载就没有太大问题,如果再不行,把网站一些栏目做一个2级域名,2级域名同样做负载,这样更厉害了吧。

nginx软件在linux上跑性能比在windows上跑要好,所以做负载可以用linux跑nginx,.net开发的网站放到windows 服务器IIS上。

本文来自:http://www.xueit.com/usenetwork/show-4866-1.aspx


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


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

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

浙ICP备11055608号-3