关灯
《文稿,还能这样写》作者雄文《笔杆子碎语》作者王一端《机关文稿写作入门》作者杨新宇《机关文字工作五十讲》作者何新国
最新《公文写作培训课程》直播间《公文写作百法例讲》作者房立洲老秘网站长、《老秘笔记》作者老猫《公文高手的自我修养》作者胡森林
开启左侧

IIS应用程序池假死、自动重启以及iis权限等解决办法(转)

[复制链接]
福建老秘 发表于 2009-9-19 16:48:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文稿修改演播室众筹计划,点击了解详情
 
IIS应用程序池假死、自动重启以及iis权限等解决办法(转)
( Q7 k/ T, c+ Y
2009年09月11日 星期五 下午 10:50
% \, Z; w4 ?( ?) x6 B+ C - Y: I' r7 l b% G: r9 V5 N G) B& r! n% J$ e% @' l y& i8 \# o z& N6 l. ~* I$ v' C- p8 ? z
) r2 F7 u7 \! w3 E. o2 R# t4 u
5 ~$ O0 S: @: u

网络上有关iis的问题和相关解决方案,多不胜搜,但很多都比较零散,没有系统的解决方案;另外,有些解决方法,似是而非,不能找到其中的问题关键点,本人平时对于服务器的应用上也有点实践,因此,今天稍稍总结一点平时遇到地问题和解决方法,特别是对iis的特殊权限引起问题、iis应用程序池假死问题和比较罕见的iis重启命令和自动重启办法。其它相关问题,继续关注本博。

o: b9 {3 P) e3 `% _3 f3 I$ R

一、2003应用程序池自动死了,不能恢复了,一直出现 Service Unavailable 常见方法如下。

) ]0 ]( a" H: [- N0 c9 q

1:没有打SP1补丁的时候会出现这个IIS6.0假死问题,但现在微软都在自动更新里面出补丁了,一般你打好最新补丁后是不会出现此问题了。(所以现在的IIS假死与这个关系不是很大)

/ E. \7 o- W8 N9 n

2:从IIS6.0开始CPU资源都在应用池里面限制了,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。你鼠标右键启动网站又会自动恢复。 这个原因:大概是以下几个因数造成的。

; \8 R6 h8 B$ ]! t/ h% s5 ^9 S' x

(1):你限制了应用池的资源,限制得太小 比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作。
出现上面这个情况解决方法:1:不限制CPU资源,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,服务器都会被拉死,你可能都无法操作服务器。)2:在超过资源那里选择关闭,这个关闭默认是失败5次,90秒内恢复,一般默认就可。网站能自动恢复,这个关闭:不是永久关闭,意思是超过资源关闭,然后在某时间内自动恢复池。不操作就是不恢复,这个是很多人的误区。

- z: M& I+ Z0 } V; ~8 R; D6 i. v

(2):内存限制 在IIS6.0应用池上面有虚拟内存和最大内存限制,如果你设置了这个。那么网站访问量大了 也会出现假死,所以不建议设置这里。默认就可。

* L7 m- V( g; [2 e {" n4 f" T

3:就是服务器自身内存太小,网站运行当然需要使用到内存了,当内存不够的时候应用池也会死掉变成禁用。那么只有等内存全部释放出来才能恢复应用池了。出现这个情况:那么你就要考虑加内存或者检查到底是什么程序占用了内存了。比如MSSQL数据库,这个可是吃内存得大户啊,最好别和WEB服务器同时一个服务器上。很多人用1G内存做 2003系统,2003NET结构是很占用内存的,所以做服务器选2003还得把内存加到2G或更高才好。 内存不够上面 2点讲到的,是没办法操作了,也无法自动恢复。

: j7 W M, G! H+ y

4:就是ACCESS数据库太大或查询太多,这个也会出现把IIS拉死,解决方法;修复ACCESS数据库,或尽量少用ACCESS数据库,升级至sqlserver数据库;或者在技术方面革新,像现在有些网站系统,风讯、动易等cms;pjblog、zblog等博客程序,都支持生成静态功能.

0 x, R& [- I2 F4 F- [* X9 v

5:不同网站用不同应用池:根据你自己实际情况而定,站点大的最好独立一个应用池,限制他的资源超过了自动回收,看上面(1)讲到的,这样就不影响其他站点。中型站点:多个网站共用一个应用池,比如5个站点用一个池,设置他资源时间等等。这样他们就算超资源了也不影响其他应用池的网站。

8 t& w5 \. X% T# Y

6:设置回收时间:很多人以为设置回收池越短越好,其实是错误的,每次回收当然是把内存回收回来了,但加重了一次服务器的负担,当服务器比较繁忙的时候,有可能导致其他应用池死。所以建议设置共1000就行了。其他独立池按照他网站流量而设置 可以设置600 也行,共用的不建议设置太短。

3 o4 s9 s& G# J1 l; v. [

7:网站后台过不了多久自动退出又要重新登陆:这个情况就是你设置回收时间太短了,按照 6点设置吧。 不要设置什么20分、30分这样的,这样不好的。另外一个原因就是和站的响应设置时间有关,设置得稍长些。

/ r* {* x# S3 U5 @! ~, V

8:windows 2003系统iis6访问本机的站点时提示“Service Unavailable”;
查看iis的应用程序池,状况提示为:未指定错误,同时应用程序池自动停止运行

9 v2 S3 d% h; b! h: S$ I7 g7 ^/ |0 Y

用事件查看器查看系统错误日志,发现如下提示:
-----------------------------------
应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为
{A9E69610-B80D-11D0-B9B9-00A0C922E750}
)的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。

; D$ h7 v3 \2 w; Q- [0 V

解决方法,给NETWORK SERVICE 加上访问iis服务的权限,具体方法如下:

& p4 X1 W8 v8 R$ G# x- p8 [

点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项,
选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE ”,给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS之后再访问同一站点,则一切正常。

4 w) Z- ]; O% s- t8 Z4 i) X$ |6 m8 }( [

9:重启IIS中的特定应用程序池命令和自动重启的方法

: A* I1 P9 `9 u- ~6 ^; X

在操作系统是Windows server 2003 SP1+的情况下,可以用以下命令部分重启IIS应用程序池:

cscript.exe c:\windows\system32\iisapp.vbs /a "DefaultAppPool"

其中/a 代表alternatively,"DefaultAppPool"代表应用程序池的实例名。如果要设置自动重启这个应用程序池,可以尝试放在批处理中,用计划任务调用此批处理即可。很多人觉得计划任务不安全,都要禁掉,事实上,计划任务的不安全是建立在其它方面不安全的前提上的,如果由于其它方面的不安全,被放入执行程序,计划任务执行,这和计划任务没有直接关系。当然,关掉,是会减少一些安全隐患,这是不错。

 

精彩评论7

正序浏览
福建老秘 发表于 2009-9-19 16:54:11 | 显示全部楼层
 
公文写作百法例讲

       在系统中IIS日志中发现:

' y* Z: X6 F) d4 g

  应用程序:ISAPI ’C:\WINDOWS\system32\inetsrv\asp.dll’ 报告它自身有问题,原因如下: ’ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。’。

' h( z! B4 S" f& u- M$ E7 }& @

  关于server 2003+IIS6 出现 ’ASP 不正常,因为执行请求的 100% 被挂起

1 B0 G& _2 m1 M) J

现象如下:
  站点无法打开,或者打开很慢.HTML可以打开.重新启动或者回收应用程序池可恢复.但过一段时间又会出现

$ s8 P8 a- G" U" x: E2 ^) l; O. g: i

日志里会有:
  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.’.

* H V3 J7 | q9 l' ~1 M

或者:
  ISAPI ’C:\WINDOWS\system32\inetsrv\asp.dll’ 报告它自身有问题,原因如下: ’ASP 不正常,因为执行请求的 100% 被挂起,而且请求队列已经使用了 0%。’。

& b" n1 u* h3 j

解决方法:

- {" ]: }9 z" n F- V

  1.asp是否正确映射到’C:\WINDOWS\system32\inetsrv\asp.dll’

1 b' E0 F, E- O }

  2.一般来讲,是由于在同属IIS的应用程序池出现了某个站ASP代码错误所致,使得内存耗尽,检查代码本身的问题.可以隔离到单独应用程序池调试

: U- [) z9 g2 N$ `& |( d" [

  3、减少应用程序池回收时间。默认为:1740。。可设为120(每2小时)

1 S% d5 C5 k7 I

IIS假死的原因:

* j( m T2 s. D0 D0 a1 {- J9 X

  打开IIS 你就会看到应用程序池,默认只有一个应用程序池,查看应用程序池的属性,会发现他的回收时间,默认多达,1740分钟,就是说,需要在1740分钟后才回收此应用程序池,如果在这个时间内,达到请求的最高限制,那么就会出现ASP假死的情况,这个就是大型网站出现假死的情况,反而,小型网站确不会出现这样的情况,因为他请求少,流量少,还没达到限制数量。当然要看你的服务器上网站数目而定。

* ~) p6 E; P8 J2 \3 B

以下是解决方法:

2 ? h# s C; c) l( s* u M1 Q+ X0 P3 e

  资料一

0 H) S: C- C- B0 n8 I

  单个网站解决方法:
  把应用程序池回收时间缩短到300-600分钟,其间回收过程中,需要占用一点CPU资源,没办法,为了稳定性,再把回收时间设为凌晨5点。

0 m8 D& R9 j2 a. E, e

多网站解决方法:

# D* o+ M: A7 f1 }8 h

  视服务器网站的多少,新建多个应用程序池,把每个池回收时间缩小到300分钟,然后再分配每个池10个网站左右(这个分配是要求你的网站访问量所定)如果某个网站,访问量大,就单独给他一个程序池,但是这样做的后果就是需要大内存,一个池现在占用我120M内存左右,反正内存大,没关系,

$ X1 U. j8 G* Y3 o+ ^- j. I

  那么多网站如何分配应用程序池,打开IIS--查看你要分配的网站属性,查看主目录--在下面你就会看到应用程序池了,分配一个就行了。

7 H3 V' j2 ]9 E7 _. \

资料二

3 ~ q* @" v9 V; v3 T

  大家在使用iis6时..如果装了动网论坛.肯定有出现过iis6假死现像..就是asp网页打开慢..但是iis却是正常的..静态网页打开速度一样..这时候..我一直是重启的方法..查了官方的资料结果没有...据官方资料说..win2003很快就要打这个补丁了..是iis6对access驱动支持不理像..也算是一个bug吧..由于我的服务器虚拟主机多..而且大多支持asp..如果一旦假死就无法运行..在多方面的资料查找下..找到了一个比较简单的方法..具体我测试是通过了..iis6自带数据应用程序池..现在就利用他来解决假死..

+ z* w) o4 o, Z" c2 v" p2 Y

  首先把bbs设一个单独的目录..然后点击应用程序池..新建应用程序池.输入应用程序池id..

. B% _, }1 i) O" c: B

  然后把bbs的虚拟目录下面的.就用程序池..选择刚才新建的应用程序池...

; [7 ]5 ^& M2 b$ j* b( ?/ c

  然后再回到刚才设好的应用程序池...点击..属性...把回收工作进程数(分钟)及回收工作进程数还有在下列时间回收时间进程勾上..然后在下列时间回收程序池里左边添加..选择一个时间..一般来说..网站到凌晨3点的时候.基本人都很少了..这时回收一下bbs的进程数..就可以解决了iis假死的现像..

7 K0 }% m. ?6 t) y% w/ U

  当然还可以配置其他信息..比如说iis6的用户名.. 我们可以打开计算机管理..然后打开计算机用户管理..添加一个用户..设置好后..在应用程序池里面..标识..把添加的用户放上去..用用户来测试回收的进程..当然还有..其他配置..其实很简单..只要好好看一下..就能明白意思...

4 ~( S+ w0 u! A+ }! N5 A+ ]3 I

  也可以借助专用的工具来回收应用程序池..这样方便而且快捷..iis的备份.虚拟主机ip的统一修改及端口访问的ip记录..用批处理是一个很简单又方便的方法.所以.把一台服务器做的安全..并不是哪么容易的事..特别是iis..经常去官方网站搜索资料是一个好习惯..还有就是经常性的访问日志..及注册表的用户还有加载运行的程序.及服务也是一个好方法.

 
 楼主| 福建老秘 发表于 2009-9-19 16:57:08 | 显示全部楼层
 
老秘网虚拟稿费
IIS 中 Service Unavailable或应用程序池自动停止的现象及其解决方法
; s, r$ b/ W: n5 U, J
2009-09-17 11:36
+ I4 u2 G0 }% J0 k6 r2 i% m U5 M @3 W+ Y& |( b* ~, z m7 m/ o( C3 _+ P( Z5 w, s: i
e8 j T, k8 w7 c' u
3 ]. U. _/ i3 V! H

如果 Microsoft Internet 信息服务 (IIS) 6.0 中没有正确地配置用于虚拟服务器的应用程序池,就可能会发生此问题。此问题可能会在存在下列一种或多种情况时发生: ?应用程序池没有运行。
?应用程序池帐户使用的密码不正确。
?应用程序池帐户不是服务器上的 IIS_WPG 和 STS_WPG 这两个组的公共成员。

& C7 M% H( E' r2 x) V

解决方案
要解决此问题,请按照下列步骤操作: 1.验证是否已为虚拟服务器配置了应用程序池。默认的应用程序池是 MSSharePointPortalAppPool。

: J. J2 L8 B0 F) H7 d

请按照下列步骤来确定虚拟服务器正在使用的应用程序池。 a. 单击“开始”,指向“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。
b. 展开“ServerName”,展开“Web 站点”,右键单击虚拟服务器,然后单击“属性”。
c. 单击“主目录”选项卡。

. J: R: d3 _$ N% J3 h3 w9 W; j

为虚拟服务器配置的应用程序池列在“应用程序池”框中。
d. 单击“确定”。

9 r# G. i: y* T- r- g+ U+ b

2.验证应用程序池帐户使用的密码是否正确。IIS 不会自动轮询 Active Directory 目录服务中的密码更改。如果应用程序池帐户是一个域帐户,其密码已过期,则在为此帐户重新指定一个新密码后,您可能会收到本文“症状”部分所描述的错误信息。

5 C& {, Q* N5 D5 u* N3 ~; [- h4 ?$ z5 Z

请按照下列步骤来验证应用程序池帐户所用的密码是否正确: a. 在 Internet 信息服务 (IIS) 管理器中,展开“应用程序池”。
b. 右键单击为虚拟服务器配置的应用程序池(例如,右键单击“MSSharePointPortalAppPool”),然后单击“属性”。
c. 单击“标识”选项卡。
d. 在“密码”框中,键入列在“用户名”框中的应用程序池帐户所用的密码,然后单击“确定”。
e. 在“确认密码”对话框中,再次键入密码,然后单击“确定”。

$ M+ @' ?, A5 q; G

3.验证应用程序池帐户是服务器上的 IIS_WPG 组和 STS_WPG 组的成员。
根据您的具体情况选用下列方法之一。 a. 在成员服务器上安装了 SharePoint Portal Server 的情况下: 1.单击“开始”,指向“管理工具”,然后单击“计算机管理”。
2.展开“本地用户和组”,然后展开“用户”。
3.右键单击虚拟服务器的应用程序池使用的帐户,然后单击“属性”。
4.单击“成员属于”选项卡。

0 Z j% k$ @" U; e% {) O, B

验证 IIS_WPG 和 STS_WPG 是否都出现在“成员属于”列表中。如果其中之一没有列出或者两者均未列出,请根据具体情况将 IIS_WPG 组、STS_WPG 组或者这两个组添加到列表中。

$ \5 q( Q4 I- `& @

b. 在域控制器上安装了 SharePoint Portal Server 的情况下: 1.启动“Active Directory 用户和计算机”。
2.展开“用户”。
3.右键单击虚拟服务器的应用程序池使用的帐户,然后单击“属性”。
4.单击“成员属于”选项卡。

& M) H. O$ d& z6 N+ I- s

验证 IIS_WPG 和 STS_WPG 都出现在“成员属于”列表中。如果其中之一没有列出或者两者均未列出,请根据具体情况将 IIS_WPG 组、STS_WPG 组或者这两个组添加到列表中。

7 p+ P# Z2 u2 C, E0 X! Y


4.重新启动 IIS 以回收应用程序池: a. 在 Internet 信息服务 (IIS) 管理器中,右键单击“ServerName”,指向“所有任务”,然后单击“重新启动 IIS”。
b. 单击“在 ServerName 上重新启动 Internet 信息服务”,然后单击“确定”。

7 |; C% m; O6 i1 G7 A9 S
点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM(配置)”选项,选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE ”,给该帐号赋予“本地启动”和“本地激活”的权限即可。
 
 楼主| 福建老秘 发表于 2009-9-19 16:59:58 | 显示全部楼层
 
专业写文章
IIS 500内部错误之解决办法(com+应用程序错误)
! T. l6 r3 w) F& m: r) W1 a
2008年05月23日 星期五 08:18
; F7 v' k! M- ^- m6 j& L" V) d4 q9 A; {- v; { ?$ u& f/ S# k( d3 I9 s2 n/ s- W* E- J" Q8 H- R; c
" ?% p" z$ l: m! j1 X
; L# u9 J3 ?; `& @5 r, C- `8 _8 C- j3 t
今天机器上IIS突然出现问题,无法解析ASP文件,只能打开HTM文件。着实让偶郁闷了半天,查了N多资料,后发现病因,解决成功,娃哈哈 ^_^
; ?0 l) _. c; a' L4 a }$ {( G3 R$ u
备注:一定要按第一种解决方案卸载msdtc并删除注册表中三处,否则再按第二种方案执行时,其三步中的最后一步无法成功。
( F. q, f$ f# y4 w" o! M( D/ C
: V* w1 W& K" x0 Z
今天很开心,发现出现问题时不要郁闷,仔细查找资料,查明原因解决后,心情不要太好哦,嘿~
. _6 M7 t1 P! a* B: F) ^6 @5 T; ^ T
1 f, I4 _& ~& v( p
==============================================================
* h3 a' e9 s/ \ }6 C
/ f2 \. c# L7 P/ c
现引用各高手心得,收藏:
# n4 Y! V0 j+ ^
" ?; p' [/ M ~! r: J

一、com+应用程序错误
我在XP上做iis,结果总是出现http500错误,然后就是一串英语,于是我在组件服务中想打开COM+应用程序结点,但是提示编录错误:执行最后操作时发生错误,错误代码:8004E00F - COM+ 无法与MS分布式事务协调程序交谈,事件日志可能包含其它疑难解答信息。

/ `( T/ O/ ~( C e. ]

1、首先进入组件服务,查看组件服务/计算机/我的电脑/COM+应用程序,结果报错“COM+ 无法与 Microsoft 分布式事务协调程序交谈”,无法查看里面的对象。
2、进入事件查看器,发现msdtc服务没有正常启动。
3、删除注册表中的键:
? HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
? HKEY_CLASSES_ROOT\CID
4、运行CMD,停止MSDTC服务:net stop msdtc
5、卸载MSDTC服务:msdtc -uninstall
6、重新安装MSDTC服务:msdtc -install
7、确认在事件查看器中msdtc服务已经正常启动[这步很关键,如果没有,重新启动下电脑看看],这里有个技巧,查看MSDTC服务是否启动,执行net stop msdtc,提示正在停止和停止成功就对了,再msdtc - install下就OK.
8、重新设置IIS的IWAM账号密码。[在计算机管理中的用户管理里]
9、同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:c:\inetput\adminscripts>adsutil set w3svc/wamuserpass "yourpassword"
10、同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:c:\inetput\adminscripts>cscript synciwam.vbs -v

* ?+ r- u8 [9 _! g1 d# D' W
* o, d9 q9 k) l3 c& `) Z0 @5 }
二、IIS 500内部错误之解决办法
$ @5 B2 j$ f. f3 z$ I. b

IIS 500内部错误之解决办法(一.错误表现)
沧海笑一声 发表于 9/10/2001 8:17:09 AM NT世界 ←返回版面

. q4 p4 Z5 a( D3 }/ J; z

一.错误表现
这个错误发生时总会有三方面的表现:一是IE中的最直接的表现,也是最让人看不懂的表现;二是安全日志中的表现,IWAM_Machine账号登录失败;三是系统日志中的表现,IIS Out-Of-Process Pooled Applications应用程序因启动账号的错误而不能够启动.从而造成ASP页面浏览错误.

8 k# A$ Q/ ]0 K0 ?. }. o0 {, O1 {$ {! q

(一)IE中的表现

: V( Z- P( p! B0 W

当浏览以前能够正常运行的asp页面时会出现如下的错误:

( c3 v" p& x* f7 e8 m( D

(1)
网页无法显示
您要访问的网页存在问题,因此无法显示。

+ Y/ w, k+ |2 I( D- r; K% t

---------------------------------------------

/ {" A: Q8 _) F

请尝试下列操作:

4 ~# L+ U, T$ ?; p6 ?# W

打开 http://127.0.0.1 主页,寻找指向所需信息的链接。
单击刷新按钮,或者以后重试。

0 A \' U8 r0 ^9 I Y; h

HTTP 500 - 内部服务器错误
Internet 信息服务

. x) @+ x+ W f" I& x( P; u

--------------------------------------------------------------------------------

2 x1 Q5 Z3 s3 F/ R0 l3 f, s3 o

技术信息(支持个人)

& H+ b# d* i$ w5 F4 A2 i( ^

详细信息:
Microsoft 支持

3 g4 G7 U, H4 x8 f5 C1 z* n

[注意,这儿只是500错误,不是500.xx等错误的,那些错误主要是asp编程问题,与iis没有太大的关系,只有500错误是由iis自身造成的]

/ `0 A0 Y5 y7 {7 r: ^# j

(2)
Server Application Error
The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.

$ ~( z0 |1 {& \' \' |" s2 p

(二)安全日志记录(2条)
事件类型: 失败审核
事件来源: Security
事件种类: 登录/注销
事件 ID: 529
日期: 2001-9-9
事件: 11:17:07
用户: NT AUTHORITY\SYSTEM
计算机: MYSERVER
描述:
登录失败:
原因: 用户名未知或密码错误
用户名: IWAM_MYSERVER
域: MYDOM
登录类型: 4
登录过程: Advapi
身份验证程序包: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
工作站名: MYSERVER

! u F2 [! |+ i6 ?5 L" P. t


事件类型: 失败审核
事件来源: Security
事件种类: 帐户登录
事件 ID: 681
日期: 2001-9-9
事件: 11:17:07
用户: NT AUTHORITY\SYSTEM
计算机: MYSERVER
描述:
登录到帐户: IWAM_MYSERVER
登录的用户: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
从工作站: MYSERVER
未成功。错误代码是: 3221225578

3 r, }7 C E6 h" S1 v4 f

注:IWAM_MYSERVER,启动进程之外的应用程序的 Internet 信息服务的内置帐号,安装IIS时自动建立,其密码由IIS控制.

7 @! k+ a- w9 S( ~4 y! e1 p5 o

(三)系统日志中的记录(2条)
事件类型: 错误
事件来源: DCOM
事件种类: 无
事件 ID: 10004
日期: 2001-9-9
事件: 11:20:26
用户: N/A
计算机: MYSERVER
描述:
DCOM 遇到错误“无法更新密码。提供给新密码的值包含密码中不允许的值。 ”并且无法登录到 .\IWAM_MYSERVER 上以运行服务器:
{3D14228D-FBE1-11D0-995D-00C04FD919C1}

/ R, V0 c6 H- l, V9 A! Z+ N+ T

事件类型: 警告
事件来源: W3SVC
事件种类: 无
事件 ID: 36
日期: 2001-9-9
事件: 11:20:26
用户: N/A
计算机: MYSERVER
描述:
服务器未能转入应用程序 '/LM/W3SVC/4/Root'。错误是 'RunAs 的格式必须是<域名>\<用户名>或只是<用户名>
'。
若要获取关于此消息的更多的信息,请访问 Microsoft 联机支持站点: http://www.microsoft.com/contentredirect.asp 。

6 d2 ~$ I5 _3 H8 K6 e3 S

注:3D14228D-FBE1-11D0-995D-00C04FD919C1}实际是IIS Out-Of-Process Pooled Applications 的KEY.也就是代表IIS Out-Of-Process Pooled Applications.
================================
IIS 500内部错误之解决办法(二.错误原因与解决办法)
沧海笑一声 发表于 9/10/2001 8:40:41 AM NT世界 ←返回版面

, Z* {5 k3 Y$ L" k2 ^3 x

出现IIS 500内部错误的原因有多个,但最主要的原因是IWAM_MACHINE账号在Active Directory(或SAM),IIS的metabase数据库与COM+组件中的密码不匹配不同步最成的.因此解决问题的关键在于使这三方的密码同步起来.
要使这三方的密码同步,有几种办法,下面只介绍最好用的一种,使用IIS自带的脚本进行密码同步(看来微软早就知道这方面的问题了,因此专门做了一个密码同步的脚本.:)):

& _6 S% L. m8 ^7 o

操作如下:
1.在本地账号管理器或AD用户与计算机中更改IWAM_MACHINE账号的密码.假设我们改为"12345678".[本来这个账号是计算机控制的,非常复杂].
2.使用新的密码重设IIS Metabase数据库.我们需要使用IIS自带的管理脚本adsutil.运行如下的命令:
c:\Inetpub\AdminScripts> adsutil SET w3svc/WAMUserPass 12345678

# [; n* F `& B1 Q+ l3 q$ e

系统会显示:
WAMUserPass: (String) "12345678"

5 Z/ R5 |4 o: m: O* m2 u

提示密码更新成功.

/ Y/ s6 B$ p# C

通常情况下IIS会自动与系统账号等信息同步,但我发现我的机器上ISUR_MACHINE是同步的,但IWAM_MACHINE总是不同步,因此只好自行修改了.

f0 l1 F8 K! O& V5 w* R9 h

3.同步COM+账号密码
同样我们要用到IIS的管理脚本synciwam.vbs,这个脚本通常会存在于c:\inetpub\adminscripts下,上一个管理脚本也在这儿放着.
命令如下:
cscript c:\inetpub\adminscripts\synciwam.vbs -v

, ^7 M2 m. G& j! x

-v参数是打开详细模式,让我们看到更新的过程,通常会如下显示:

. J' A) a( }+ ?2 p+ B `

Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2000。保留所有权利。

2 ?+ v% Y) _* S

WamUserNameIWAM_MYSERVER
WamUserPass12345678
IIS Applications Defined:
Name, AppIsolated, Package ID
w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}
Root, 2,
IISHelp, 2,
IISAdmin, 2,
IISSamples, 2,
MSADC, 2,
ROOT, 2,
IISAdmin, 2,
IISHelp, 2,
Root, 2,
Root, 2,

8 T2 E) t* t7 ~9 _/ p V

Out of process applications defined:
Count: 1
{3D14228D-FBE1-11d0-995D-00C04FD919C1}

. x( M, v" f8 d3 S

Updating Applications:
Name: IIS Out-Of-Process Pooled Applications Key: {3D14228D-FBE1-11D0-995D-00C04
FD919C1}

. Z5 I0 L3 r z

密码同步成功.如果不成功先看一下这个脚本取的IIS的密码正确不正确,如果不正确请重复第二步同步IIS密码

 
 楼主| 福建老秘 发表于 2009-9-19 17:07:05 | 显示全部楼层

主题或内容里含有日文片假使搜索就内存溢出这个问题

 
6 ~' h- ], ~* M' z, B0 \# d
6 }- V, |; g; g! w N0 l6 D& f

有个朋友说过这个问题,但看不懂。

9 g4 A( B% u" Y& ?# g

==(补充修改版)26个日文片假名导致Access搜索(80040e14/内存溢出)的解决办法== 2004-11-20 补充最新修改版,使用Unicode的字符代码,而不是非unicode(负数值,有时会出错)代码

) |! p" N9 L+ K6 y- z

ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ 当字段内包含了这26个日文字符任意一个多个时,就会导致在执行SQL语句中包含了 [字段] like '%aaaaa%'inStr(1,[字段],'aaaaa',1)>0 这样的查询时,毫无道理的出现了 "Microsoft JET Database Engine 错误 '80040e14' 内存溢出"的错误 其他Jet SQL函数命令未作测试,大概与字符搜索定位匹配相关的都可能出错 搜索相关资料得知被微软工程师证实是Access的bug,可能是语法关系都是微软的东东在vbs中 执行inStr(1,日文平假名变量,"aaaaa",1)依然要出现错误 Microsoft VBScript 运行时错误 错误 '800a0005' 无效的过程调用或参数: 'instr' 没有搜索,因这几个字符出现Access的论坛网站搜索无法进行,何等痛苦昨天一朋友大叫怪事,他的音乐数据库无法搜索了,只有30000条记录时是好的毫无疑问,日文片假名是祸根,花几分钟把有包含上面的日文替换成"?"搜索顺利恢复找来论坛程序用户群最大的动网dvBBS AC版本 7.0SP2 版测试,同样有这个日文发帖后 导致无法搜索并且运行时出错的问题线上去搜索 '80040e14' 内存溢出" 的错误 多的是! 一简单有效的解决办法: 对这26个字符进行编码和解码,可能效率感觉不理想,测试下来问题不大,速度影响不是太大 编码: Function Jencode(byVal iStr) if isnull(iStr) or isEmpty(iStr) then Jencode="" Exit function end if dim F,i,E E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") F=array(chrw(12468),chrw(12460),chrw(12462),chrw(12464),_ chrw(12466),chrw(12470),chrw(12472),chrw(12474),_ chrw(12485),chrw(12487),chrw(12489),chrw(12509),_ chrw(12505),chrw(12503),chrw(12499),chrw(12497),_ chrw(12532),chrw(12508),chrw(12506),chrw(12502),_ chrw(12500),chrw(12496),chrw(12482),chrw(12480),_ chrw(12478),chrw(12476)) Jencode=iStr for i=0 to 25 Jencode=replace(Jencode,F(i),E(i)) next End Function

, m4 v' U- Y4 `7 _' a6 c

解码:

3 A/ Y6 ]8 ]. T

Function Juncode(byVal iStr) if isnull(iStr) or isEmpty(iStr) then Juncode="" Exit function end if dim F,i,E E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") F=array(chrw(12468),chrw(12460),chrw(12462),chrw(12464),_ chrw(12466),chrw(12470),chrw(12472),chrw(12474),_ chrw(12485),chrw(12487),chrw(12489),chrw(12509),_ chrw(12505),chrw(12503),chrw(12499),chrw(12497),_ chrw(12532),chrw(12508),chrw(12506),chrw(12502),_ chrw(12500),chrw(12496),chrw(12482),chrw(12480),_ chrw(12478),chrw(12476)) Juncode=iStr for i=0 to 25 Juncode=replace(Juncode,E(i),F(i))'□ next End Function 注意,如果直接使用字符不方便(windows还没装日文支持),注释掉的部分提供有 chr(-23804) ..这样的定义 这样 1. 表单输入保存时,使用Jencode()将这26个字符先编码再保存(为什么是这26个字符,经过全部测试87个平假名89个片假名最终认定的) 如ゴ 即 chr(-23116) 编码为 Jn1; 2. 显示时,则使用 Juncode() 函数进行解码,还原日文片假名显示 3. 搜索关键字,也要使用 Jencode() 进行编码后再放入 like里 where [Topic] like '%Jencode(kewwords)%' 使用才能保证搜索的值和编码过的数据库字段内容匹配 ================================== PS: 也可以使用正则表达式来改写上面的两个函数,或许效率还要更高些再就是如果 压根不使用日文,也不需要搜索日文,则解码部分可以不用,保存数据实直接把这26个片假名字符替换为空字符或任一字符,比如"□" 抛砖引玉,如果有更本质的真正的好方法,谢分享 附: ---------------------------- 平假名87个 asc值 -23391 --> -23316 unicode 3040-309F ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん゛゜ゝゞ ------------------------------ 片假名89个 asc值 -23135 -> -23059 unicode 30A0-30FF ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶーヽヾ

' u6 d. D8 Y6 e. Y" k7 w- `1 H

================补充 修改的版本===========================

5 R3 Z. ~( \+ J

添加一个编码解码参数codeType 都使用一个函数使用chr()不直接使用日文字符这样~ 够简洁了吧?

f1 H7 ~6 x$ P' ?

疑点: 显示日文是不会出错的,保存到数据库也不会出错只有SQL使用 like 和 inStr 的时候 才会出错 这个与显示无关!还有在vbs里使用 inStr(1,str,"aaa",1)这样按字符搜索也会错改为 inStr(lcase(str),"aaa") 就不会出错

! ~! _8 X M9 b: e. V, w4 V

如果一定得用 inStr(1,str,"aaa",1) 字符搜索语法则一定要在先inStr() 后 jncode() 的顺序 否则会出错

V+ m5 T" a4 z

一点问题都没有! 注意到这几点绝对没错!

5 }2 O* B! V# F4 ?/ ^

rs("TopicStr")=Jncode(TopicStr,true) 'encode 保存到数据库的资料 DisplayStr=Jncode(rs("TopicStr"),false) 'uncode '显示到页面的标题

. ^- m, a7 n5 R) L6 l

Function Jncode(byVal iStr,codeType) if isnull(iStr) or isEmpty(iStr) or iStr="" then Jncode="" : Exit function end if dim F,i,E E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;",_ "Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;",_ "Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;",_ "Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") F=array(chrw(12468),chrw(12460),chrw(12462),chrw(12464),_ chrw(12466),chrw(12470),chrw(12472),chrw(12474),_ chrw(12485),chrw(12487),chrw(12489),chrw(12509),_ chrw(12505),chrw(12503),chrw(12499),chrw(12497),_ chrw(12532),chrw(12508),chrw(12506),chrw(12502),_ chrw(12500),chrw(12496),chrw(12482),chrw(12480),_ chrw(12478),chrw(12476)) if codyType then for i=0 to 25 iStr=replace(iStr,F(i),E(i)) next else for i=0 to 25 iStr=replace(iStr,E(i),F(i)) next end if Jncode=iStr End Function

* _ i$ a1 D. p0 n; h3 a0 Z

====================================================

 
 楼主| 福建老秘 发表于 2009-9-19 17:11:50 | 显示全部楼层
 
$ [4 O+ P7 ]6 b& ]3 a# c# Y+ J" Z) w! i" h1 S; X; A' Z2 N8 X% m
: }. T* _7 j o) ?' B4 C4 w
' P* N4 V$ p: K! S! z$ e

我帮楼上的兄弟转过来

- ]7 @- H& n- \; a" E

因为你的论坛有人发贴带日文了,解决方法有两个,最好是升级成MSSQL版就不会了,如果没条件换成MSSQL版的话,我的方法是(非官方):

7 t& y8 _1 q; @. \8 l( Q

Query.asp文件

* `4 B3 w) x- j6 P

找到(大概在353行附近)

, h3 l% F% H) W2 v" S0 l4 m

SqlColumn = SqlColumn &",HideName From dv_Topic Where "&searchboard&" Title like "&SearchUserID&" Order By TopicID Desc"

9 R- @* D& [% A" v

改成

0 {; u# i3 J6 B( R

'SqlColumn = SqlColumn &",HideName From dv_Topic Where "&searchboard&" Title like "&SearchUserID&" Order By TopicID Desc"
SqlColumn = SqlColumn &",HideName From dv_Topic Where "&searchboard&" InStr(1,LCase(Title),LCase('"&keyword&"'),0)<>0 Order By TopicID Desc"

1 U) v! N, u9 c" x

8 s# S3 ?5 z* j1 C* G' y7 ~

------------------------------------------------------------------------------------------

r: f( E. ?5 d- k+ c

找到(大概在456行附近)

1 \$ f5 P) Z! K; }3 ~

SqlColumn = SqlColumn & " From " & stable & " Where "&searchboard&" body like '%"&keyword&"%' Order By AnnounceID Desc"

; m3 Z: G# I0 `# \: y4 ]

改成

6 Y* Y" E$ }" B% d7 l

'SqlColumn = SqlColumn & " From " & stable & " Where "&searchboard&" body like '%"&keyword&"%' Order By AnnounceID Desc"
SqlColumn = SqlColumn & " From " & stable & " Where "&searchboard&" InStr(1,LCase(body),LCase('"&keyword&"'),0)<>0 Order By AnnounceID Desc"


 
 楼主| 福建老秘 发表于 2009-9-19 17:13:19 | 显示全部楼层
 
Access数据库查询内存溢出补丁!
0 b1 w+ X C" o; w# r
/ |& Q( j3 P+ u5 m6 _4 J( @4 c
    1 }8 n" f$ i. j/ i* i8 N6 `: z
  • . m. n3 m @% u1 z( o# S5 d

    由于查询内容中出现日文等数据库不支持的字符.导致Access数据库查询内存溢出!

    , M9 k+ x, [. g8 h9 H

    此补丁已经修复了这个问题,请下载替换便可,安装说明见补丁包!

    / c" c% l( L0 o$ A

    点击下载 update_v1.8jp.rar

 
 楼主| 福建老秘 发表于 2009-9-19 17:17:29 | 显示全部楼层
 

Asp之ACCESS数据库遇日文时内存溢出的处理办法

6 s9 s. b! |1 A3 t1 }
( H2 K0 i( x N% a4 a! N. S
默认分类   2009-06-21 03:50   阅读48   评论0  
2 V) f2 a" y6 s$ _' [3 M
字号:    
9 T$ [: G2 w8 t! K
. ]/ P2 p2 y E; q2 z1 e; x+ G0 w
) F" \( r# c" i0 h
ACCESS有个BUG,那就是在使用 like 搜索时如果遇到日文就会出现“内存溢出”的问题,提示“80040e14/内存溢出”。 

以前也遇到过了,不过那时没怎么在意把含有日文的数据删除了就好了,现在这次的都是些重要的资料不可能删除的,就需要想办法来解决了。 

那导致出问题的26个日文:ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ  

说一下解决办法: 

1、最笨的方法:删除含有日文的数据 
    
这就不用解释了; 

2、替换方法: 

思路:就是存储进入数据库时把那26个日文替换成别的编码,在从数据库取出来后在反替换回来; 

从网上找了个现成的函数: 
编码: 
Function Jencode(byVal iStr) 
if isnull(iStr) or isEmpty(iStr) then 
Jencode="" 
Exit function 
end if 
dim F,i,E 
’ F=array("ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ",_ 
’ "ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ",_ 
’ "ヂ","ダ","ゾ","ゼ") 
E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") 
F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_ 
chr(-23118),chr(-23114),chr(-23112),chr(-23110),_ 
chr(-23099),chr(-23097),chr(-23095),chr(-23075),_ 
chr(-23079),chr(-23081),chr(-23085),chr(-23087),_ 
chr(-23052),chr(-23076),chr(-23078),chr(-23082),_ 
chr(-23084),chr(-23088),chr(-23102),chr(-23104),_ 
chr(-23106),chr(-23108)) 
Jencode=iStr 
for i=0 to 25 
Jencode=replace(Jencode,F(i),E(i)) 
next 
End Function 

解码: 
Function Juncode(byVal iStr) 
if isnull(iStr) or isEmpty(iStr) then 
Juncode="" 
Exit function 
end if 
dim F,i,E 
’ F=array("ゴ","ガ","ギ","グ","ゲ","ザ","ジ","ズ","ヅ","デ",_ 
’ "ド","ポ","ベ","プ","ビ","パ","ヴ","ボ","ペ","ブ","ピ","バ",_ 
’ "ヂ","ダ","ゾ","ゼ") 
E=array("Jn0;","Jn1;","Jn2;","Jn3;","Jn4;","Jn5;","Jn6;","Jn7;","Jn8;","Jn9;","Jn10;","Jn11;","Jn12;","Jn13;","Jn14;","Jn15;","Jn16;","Jn17;","Jn18;","Jn19;","Jn20;","Jn21;","Jn22;","Jn23;","Jn24;","Jn25;") 
F=array(chr(-23116),chr(-23124),chr(-23122),chr(-23120),_ 
chr(-23118),chr(-23114),chr(-23112),chr(-23110),_ 
chr(-23099),chr(-23097),chr(-23095),chr(-23075),_ 
chr(-23079),chr(-23081),chr(-23085),chr(-23087),_ 
chr(-23052),chr(-23076),chr(-23078),chr(-23082),_ 
chr(-23084),chr(-23088),chr(-23102),chr(-23104),_ 
chr(-23106),chr(-23108)) 
Juncode=iStr 
for i=0 to 25 
Juncode=replace(Juncode,E(i),F(i))’□ 
next 
End Function 

3、处理SQL语句: 
不要使用like语句,举个例子: 

会出问题的SQL:  where title like ’%"&keyword&"%’ 

现在换成下面的就不会出现内存溢出了:where InStr(1,LCase(Title),LCase(’"&keyword&"’),0)<>0 

问题应该可以解决。
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

18粉丝

1181帖子

排行榜
作者专栏

关注我们:微信订阅号

官方微信公众号

客服个人微信号

全国服务热线:

0595-22880819

公司地址:泉州秘途文化传媒有限公司

运营中心:福建省泉州市

Email:506070961#qq.com

Copyright   ©2015-2025  老秘网 责任编辑:释然Powered by©Discuz!技术支持:秘途文化  备案号   ( 闽ICP备19022590号-1 闽公网安备35050302000919号 )