欢迎光临
我们一直在努力

手工配置 ApplicationInitialization For IIS 7.5

悠然见南山阅读(17)评论(0)

解决 iis 重启后,首次访问系统很慢的问题
此方法仅适用 iis7.5 处理步骤如下: 1.下载 ApplicationInitialization。 2.安装完成后,设置 IIS。 A.找到 C:\Windows\System32\inetsrv\config\,打开 applicationHost
在文件中找<applicationPools>节,找到应用程序池名称.NET v4.5,将 automode 属性去

掉,改成 startMode=”AlwaysRunning”,如下所示:

<add name=”.NET v4.5″ startMode=”AlwaysRunning” managedRuntimeVersion=”v4.0″ />
在文件中找到<sites> ,网站名称 EPC,应用名称为 appinit,增加属性

preloadEnabled=”true”,如下所示:

<site name=”EPC” id=”2″ serverAutoStart=”true”><application path=”/appinit” preloadEnabled=”true” applicationPool=”.NET v4.5″>

B.设置应用的 webconfig,在<system.webserver>中增加下面的内容: <applicationInitialization remapManagedRequestsTo=”userlogin2.aspx” skipManagedModules=”true” > <add initializationPage=”/userlogin2.aspx” /> </applicationInitialization>

注意:上述设置只针对单个应用。IIS 部署了多少应用就需要设置多少次。

Mysql:InnoDB: The log sequence number in ibdata files does not match

悠然见南山阅读(13)评论(0)

一日,公司笔记本升级防火墙,于是备份所有文件后交IT处理。
再拿到手上,就是一台重新装了系统的笔记本了。
这时才想起来mysql没有做导出,但是由于备份了所有数据文件,应该有办法恢复回来。
操作如下—
1.重新安装了相同版本的Mysql,并选择相同的引擎INNODB。
2. 关掉Mysql服务,将原data文件夹覆盖新装的data文件夹,启动失败报错1067
3.于是保留data文件夹里的ibdata1文件,其他覆盖掉。
4.启动Mysql,查询发现database都在了,任选了一个db,查询tables也都在。心说大功告成。
5.启动应用,报错提示表找不到。
6.命令行连到数据库上,show databases结果正确,show tables结果正确,desc [table]失败,提示table找不到。
7.后来才知道innodb引擎的数据还是存储在ibdata1中的,虽然那些frm文件和database文件夹都在,但是好像数据并不保存在这些文件里。
8.查找网络,提示先添加my.ini中 innodb_force_recovery=4, 启动服务,在删除该配置。
于是照做,成功。
步骤如下—
1. shutdown mysql
2. modify my.ini, add record “innodb_force_recovery=4”
3. start up mysql service
4. connect mysql, show databases is correct, show tables is correct, desc [table] results correct.
5. It succeeds. Thank God.
6. stop mysql, remove record “innodb_force_recovery=4”, start up mysql
7. start application, everything goes well.
In fact, I am not sure whether it will work if we don’t add “innodb_force_recovery=4”, hope someone tried.

PHP 5.6 中 Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version

悠然见南山阅读(8)评论(0)

在使用数组转换为XML 时,出现这种错误

Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version。

特别是在微信开发的时候,字符串转换成XML时,有可能导致这种问题。

 

解决方法

找到php.ini  文件, 把always_populate_raw_post_data  修改为-1 就行了。

always_populate_raw_post_data=-1

解决iis重启后,首次访问系统很慢的问题 

悠然见南山阅读(40)评论(0)

解决iis重启后,首次访问系统很慢的问题

此方法仅适用iis7.5 处理步骤如下:
1.下载ApplicationInitialization。 2.安装完成后,设置IIS。
A.找到C:\Windows\System32\inetsrv\config\,打开applicationHost

在文件中找<applicationPools>节,找到应用程序池名称.NET v4.5,将automode属性去
掉,改成startMode=”AlwaysRunning”,如下所示:

<add name=”.NET v4.5″ startMode=”AlwaysRunning” managedRuntimeVersion=”v4.0″ />

在文件中找到<sites> ,网站名称EPC,应用名称为appinit,增加属性
preloadEnabled=”true”,如下所示:

<site name=”EPC” id=”2″ serverAutoStart=”true”><application path=”/appinit” preloadEnabled=”true” applicationPool=”.NET v4.5″>

B.设置应用的webconfig,在<system.webserver>中增加下面的内容:
<applicationInitialization  remapManagedRequestsTo=”userlogin2.aspx”

skipManagedModules=”true” >

<add initializationPage=”/userlogin2.aspx” />

</applicationInitialization>

IIS7.5也有Warm Up功能 让ASP.NET第一次Request不变慢

悠然见南山阅读(49)评论(0)

页开发者早期最常遇到一个问题,当网站布署到IIS时候,每当IIS或是Application Pool重启后,第一位进入网站的使用者,其体验往往第一个反应就是网站很慢,然后就一直询问IT为什么网站这么慢。但是,IT再去确认之后,网页速度又没有问题,虽然这问题看似不是很大问题,不过,有时企业内部网站,会因为在Web Site 初始化时候进行一堆设定跟Loading Data,这样等待时间就不会是几秒而已了。因此,早期在IIS7.0以前为了避免这不友善的使用者体验,通常都会自行撰写Warm Up功能,这种功能大都是仿真使用者第一次登入动作,让真正第一次使用者对于IIS来说是第二次的Request来解决这问题。

自从Windows 2012出来之后,这部分Application Initialization功能已经有内含在IIS8之中,可以直接进行设定就可以。

 

不过,在大部分的企业用户中并不可能这么快都使用Windows 2012,大都还停留在IIS6或是IIS7.X的时代,不过,目前微

软针对Windows R2的IIS7.5,Release Warm Up的模块叫做Application Initialization Module for IIS 7.5,让在IIS 7.5也可

以有此功能,让我们透过外挂模块就可以轻松拥有Warm Up机制。

官方下载网址:http://www.iis.net/downloads/microsoft/application-initialization

 

下载完毕,点击两下就可以开始安装。

 

基本上安装速度很快,一下就可以安装完毕,安装完毕后会要求重新开机,因此,在安装时须注意此主机这个时段可以重新 www.it165.net

开机不然就会很糗了


原则上安装模块完毕后,因该在IIS中会出现Warm Up图标控件,让我们去设定。但是,我在这边安装了几台都没有出

现这控件可以进行网站设定。甚至连安装在Win7上也没有出现控件。不过,若是去IIS模块列表中,却又可以看到已

经确实有安装了Application Initialization模块,可供使用。

 

为了解决此问题,又必须再去安装Application Initialization for UI,才有办法让IIS出现UI可以进行设定,安装档请参阅附档

下载。安装完毕后,在IIS控制置模块中会出现一个Application Initialization图示,此时我们就可以开始设定了

 

Warm Up设定方式满简单的,可以针对Application Pool层级或是Web Site层级两者进行设定

1.Application Pool层级:只要有需要的Application Pool的Start Mode设定AlwaysRunning就可以

 

2.Web Site层级:选择你们要做Preload的Web Site。

 

选择好Web Site之后,记得下图红框地方要打勾,才有办法进行Warm Up功能。

 

以上都设定好之后,来进行试验一下。分别测试有无Warm Up的Web Site对于第一个Request的反应,当所有Web Site都

重新启动,模拟第一位User进入此网站

无设定Warm Up的Web Site

 

有设定Warm Up的Web Site

 

从上图的比较发现,有无Warm Up对于网站的反应是有差别的。

Application Initialization for UI :http://www.it165.net/uploadfile/2013/0601/20130601104150404.zip

IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案

悠然见南山阅读(16)评论(0)

找到Web站点对应的应用程序池,“应用程序池” → 找到对应的“应用程序池” → 右键“高级设置…”

一、一般优化方案

  1、基本设置

[1] 队列长度: 默认值1000,将原来的队列长度改为 65535。

[2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。

[3] 托管管道模式:Integrated 或 Classsic。


  2、高级设置

  [1] 闲置超时(分钟):默认20分钟,修改设长。

[2] 快速故障防护 → 已启用 :默认True,改为False。

  3、解决PEP第一次打开PEP速度慢

回收间隔时间

使用windows server 2008 r2解决回收假死的问题

打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。

二、支持同时10万个请求

通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅。

站点碰到如下问题:

Error Summary:

HTTP Error 503.2 – Service Unavailable
The serverRuntime@appConcurrentRequestLimit setting is being exceeded.

Detailed Error Information:

Module IIS Web Core
Notification BeginRequest
Handler StaticFile

Error Code 0x00000000

由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误。

为了避免这样的错误,我们根据相关文档调整了设置,让服务器从设置上支持10万个并发请求。

具体设置如下:

  1. 调整IIS 7应用程序池队列长度

将原来的队列长度由默认值 1000 改为 65535。当然这里的队列长度你可以根据自己的 访问用户*1.5 来设置,例如:有2000用户,此处就可以设置为3000(3000=2000用户数*1.5)。

  2.  调整IIS 7的appConcurrentRequestLimit设置

由原来的默认5000改为100000。

[1] 在cmd中执行:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

[2] 在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到该设置:

<serverRuntime appConcurrentRequestLimit=”100000″ />

  3. 调整machine.config中的processModel>requestQueueLimit的设置

[1] 单击“开始”,然后单击“运行”,或者 windows + R。

[2] 在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,可以选择你自己当前想设置的.NET版本的config)

[3] 找到如下所示的 processModel 元素:<processModel autoConfig=”true” />

[4] 将 processModel 元素替换为以下值:<processModel enable=”true” requestQueueLimit=”15000″ />

[5] 保存并关闭 Machine.config 文件。
由原来的默认5000改为100000。

<configuration>
    <system.web>
        <processModel enable="true" requestQueueLimit="100000"/>

参考文章:http://technet.microsoft.com/en-us/library/dd425294(office.13).aspx

  4. 修改注册表,调整IIS 7支持的同时TCPIP连接数

由原来的默认5000改为100000。在cmd中执行:

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

可在注册表中查看

  5. 运行命令使用设置生效

net stop http  & net start  http & iisreset

完成上述5个设置,就可以支持10万个并发请求,博客园博客服务器已经启用上述设置。

为了方法大家与自己使用,我把上面能用bat操作简单放到一个bat文件里面了。将下面的内容保存为do.bat文件运行就可以了,需要手工的自己操作

三、支持高并发的IIS Web服务器常用设置

适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0

适用的Windows Server版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012

  1、应用程序池(Application Pool)的设置:

[1] General->Queue Length设置为65535(队列长度所支持的最大值)
[2] Process Model->Idle Time-out设置为0(不让应用程序池因为没有请求而回收)
[3] Recycling->Regular Time Interval设置为0(禁用应用程序池定期自动回收)

  2、.Net Framework相关设置

[1] 在machine.config中将
< processModel autoConfig=”true” />

改为

<processModel enable=”true” requestQueueLimit=”100000″/>

(保存后该设置立即生效)

[2] 打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到<defaultBrowser id=”Wml” parentID=”Default” >,注释<capabilities>部分,然后在命令行中运行aspnet_regbrowsers -i。以解决text/vnd.wap.wml问题。

设置命令:

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
设置结果:
< serverRuntime appConcurrentRequestLimit=”100000″ />

(保存后该设置立即生效)

  4、http.sys的设置

注册表设置命令1(将最大连接数设置为10万):
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

注册表设置命令2(解决Bad Request – Request Too Long问题):

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768

(需要在命令行运行 net stop http  & net start http & iisreset 使设置生效)

  5、针对负载均衡场景的设置

在Url Rewrite Module中增加如下的规则:

注意事项:添加该URL重写规则会造成IIS内核模式缓存不工作,详见微软的坑:Url重写竟然会引起IIS内核模式缓存不工作。

  6、 设置Cache-Control为public

在web.config中添加如下配置:

复制代码
<configuration>
 <system.webServer>
  <staticContent>
   <clientCache cacheControlCustom="public" />
  </staticContent>
 </system.webServer>
</configuration>
复制代码

在machine.config的<processModel>中添加如下设置:

< processModel enable="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50"/>

nginx windows 下,关闭 error_log.log,access_log.log

悠然见南山阅读(192)评论(0)

  1. #user  nobody;
  2. worker_processes  1;
  3. #pid文件位置
  4. pid        logs/nginx.pid;
  5. #worker_rlimit_nofile 8192;
  6. #错误日志 可以在下方直接使用 [ debug | info | notice | warn | error | crit ]  参数
  7. error_log nul;  #关闭日志
  8. #error_log  logs/error.log;
  9. #每个进程最大打开文件数 配置要和系统的单进程打开文件数一致
  10. worker_rlimit_nofile 65535;
  11. events {
  12. #   use epoll;          #使用epoll模式
  13.     worker_connections  65535;  #每个进程的最大连接数
  14. }
  15. http {
  16.     include       mime.types;
  17.     default_type  application/octet-stream;
  18. #访问日志配置
  19. #log_format gzip ‘$remote_addr – $remote_user |$time_local| ‘
  20. #'”$request” $status $bytes_sent ‘
  21. #'”$http_referer” “$http_user_agent” “$gzip_ratio”‘;
  22. #log_format  gzip  ‘|来访IP:|$remote_addr|时间:|$time_local|请求:|$request|状态:|$status|字节数:|$body_bytes_sent|浏览器信息:|$http_user_agent|-1-|$http_x_forwarded_for|-2-|$http_referer’;
  23. log_format  alog  ‘|$time_local|$remote_addr|$gzip_ratio|$request|$http_referer|$status|$body_bytes_sent|$http_user_agent|$http_x_forwarded_for’;
  24.     #access_log  logs/access.log gzip;
  25.     #access_log  logs/alog.log alog;
  26.     access_log nul; #关闭访问日志
  27.     sendfile        on;
  28.     #tcp_nopush     on;
  29. #nginx处理的最大文件尺寸
  30.     client_max_body_size 20m;
  31. #nginx缓冲设置
  32.     server_names_hash_bucket_size 128;
  33.     client_header_buffer_size 128k;
  34.     large_client_header_buffers 8 128k;
  35.     keepalive_timeout  60;
  36. #fastcgi配置
  37.     fastcgi_connect_timeout 300;
  38.     fastcgi_send_timeout 300;
  39.     fastcgi_read_timeout 300;
  40.     fastcgi_buffer_size 64k;
  41.     fastcgi_buffers 4 64k;
  42.     fastcgi_busy_buffers_size 128k;
  43.     fastcgi_temp_file_write_size 128k;
  44. #负载均衡
  45. upstream myfastcgi {
  46.     server 127.0.0.1:9000 weight=1;
  47.     server 127.0.0.1:9001 weight=2;
  48.     server 127.0.0.1:9002 weight=3;
  49.     server 127.0.0.1:9003 weight=2;
  50. }
  51. #Gzip压缩设置
  52.     gzip            on;
  53.     gzip_min_length     1k;
  54.     gzip_buffers        4 16k;
  55.     gzip_comp_level     8;
  56.     gzip_http_version   1.0;
  57.     gzip_types      text/plain application/x-javascript text/css application/xml text/vnd.wap.wml application/vnd.ms-excel application/msword application/pdf application/vnd.ms-powerpoint;
  58.     gzip_vary       on;
  59. #目录索引设置
  60.     autoindex on;
  61.     autoindex_localtime on;
  62. #增加头标
  63.     add_header Server abans;
  64. #开启ssi模块
  65.     ssi on;
  66.     ssi_silent_errors on;
  67.     ssi_types text/shtml;
  68. #是针对每个IP定义一个存储session状态的容器 定义了一个10m的容器 按照32bytes/session 可以处理320000个session
  69.     limit_zone   one  $binary_remote_addr  10m;
  70. #其它配置文件
  71.     include abans/*.conf;
  72.     include e:/au/my/abans/admin/host/vhost/*.conf;
  73. }

PHP使用curl替代file_get_contents

悠然见南山阅读(161)评论(0)

$url=’https://apis.map.qq.com/ws/geocoder/v1/?location=29.52168,106.56256&key=NOSBZ-5NW33-55K3M-YF3NW-2IOOS-WQFWU&get_poi=0&coord_type=1′;

$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); //返回api的json对象
//关闭URL请求
curl_close($curl);
echo $tmpInfo; //返回json对象

zend opcache引起Apache 不时挂掉

悠然见南山阅读(228)评论(0)

1、可能解决方法一:

系统:windows 2008 r2

环境:apache 2.4.9 (64)+php 5.5.14 (64)
运行组件:所有运行组件均以安装,且均为64位版
症状:opcache 默认配置开启,运行大概10-30分钟,apache 假死崩溃,系统日志可看到以下错误,

1,无法找到来自源 Zend OPcache 的事件 ID 487 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。
如果该事件产生于另一台计算机,则必须在该事件中保存显示信息。
以下是包含在事件中的信息:
Unable to reattach to base address
试图访问无效的地址。
2,错误应用程序名称: httpd.exe,版本: 2.4.9.0,时间戳: 0x53258cd5
错误模块名称: php5ts.dll,版本: 5.5.12.0,时间戳: 0x53614545
异常代码: 0xc0000005
错误偏移量: 0x000000000001ed3a
错误进程 ID: 0x46c
错误应用程序启动时间: 0x01cf8e08bd43da8e
错误应用程序路径: D:\upupw\Apache2\bin\httpd.exe
错误模块路径: D:\upupw\Apache2\bin\php5ts.dll
报告 ID: a356f798-f9fe-11e3-a5ea-902b346c2007

官方给的解决方案是
http://www.php.net/manual/zh/opcache.configuration.php
修改php.ini 里opcache 配置

opcache.mmap_base    默认值为空

在 Windows 平台上共享内存段的基地址。 所有的 PHP 进程都将共享内存映射到同样的地址空间。 使用此配置指令避免“无法重新附加到基地址”的错误。实验错误,没解决。这个问题,我提交过几次给论坛,火锅也积极解决了,但都没解决.

无意中从国外1个网站复制了解决方式,opcache.mmap_base = 0x20000000 ,经过在服务器上稳定运行了24+小时。日均pv 1.3W,没有出现假死,算是完美了。这个问题我也准备提交给火锅,默认的配置下是没有这段配置的。

2、可能解决方法二:

PHP 扩展 OPcache 针对 Moodle 的配置要求

    从 Moodle 2.6 开始,PHP 的扩展 OPcache 就被强烈推荐使用。OPcache 可以提升 Moodle 网站的性能,并降低内存的消耗。PHP 5.5 开始包含了 OPcache 扩展。微软今年已经推出了 Microsoft Drivers 3.2 for PHP for SQL Server,能够支持 PHP 5.6。我终于可以把 PHP 版本升级到 5.6 了,那顺理成章也要配置启用 OPcache 了。

首先在 php.ini 中要添加扩展的文件名。

[PHP_OPCACHE]
zend_extension=php_opcache.dll

然后根据 Moodle 官网的文档配置 OPcache 的参数项。

[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60

; Moodle 要求的设置
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0

; 如果 Moodle 中出现某些问题,可尝试用以下配置解决
;opcache.revalidate_path = 1 ; 可以修复 include 路径的问题
;opcache.mmap_base = 0x20000000 ; (仅针对 Windows) 修复 OPcache 出现事件 id 487 的崩溃

; Moodle 2.6 及以上版本的实验用途
;opcache.fast_shutdown = 1 ; 使用快速停止续发事件
;opcache.enable_cli = 1 ; 加速 CLI cron
;opcache.load_comments = 0 ; 可减少内存使用,可能与插件及其它应用不兼容

对于 max_accelerated_files 参数的说明:

这是 OPcache 哈希表中可存储的脚本文件数量的上限。实际的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个比设置值大的质数。设置值的取值范围是 200 到 100000 之间。Moodle 中建议设置为 4000,实际值就是 7963。Moodle 中核心的 php 文件数量不会超过这个数字,但是如果增加了插件或者做了二次开发,缓存的 php 文件数量大大超过 7963,那就建议把 max_accelerated_files 设置为 8000。

opcache引起的“php-cgi.exe – FastCGI 进程意外退出”,事件ID487

悠然见南山阅读(198)评论(0)

服务器环境:windows2008 R2 64bit/IIS7.5 ,PHP7或5.6

php -v一切正常,IIS错误:“php-cgi.exe – FastCGI 进程意外退出”,事件查看器显示:无法找到来自源 Zend OPcache 的事件 ID 487 的描述。……

解决方法:

官方参考:http://www.php.net/manual/zh/opcache.configuration.php

修改php.ini 里opcache 配置:opcache.mmap_base = 0x20000000

更专业 更方便

联系我们联系我们