浏览 Windows SharePoint Services Web 站点时收到“Service Unavailable”(服务不可用)错误信息

本文介绍了SharePoint应用程序池相关问题,症状可能源于应用程序池未运行、密码不正确或帐户非IIS_WPG和STS_WPG组成员。给出解决方案,包括验证应用程序池配置、密码正确性、帐户组成员身份,最后需重启IIS回收应用程序池。

原出处:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;823552

症状

当您浏览一个 Windows SharePoint Services Web 站点时,您可能会收到下面的错误信息:


Service Unavailable

原因

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

解决方案

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

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

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

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

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

        验证 IIS_WPGSTS_WPG 是否都出现在“成员属于”列表中。如果其中之一没有列出或者两者均未列出,请根据具体情况将 IIS_WPG 组、STS_WPG 组或者这两个组添加到列表中。
    2. 在域控制器上安装了 SharePoint Portal Server 的情况下:
      1. 启动“Active Directory 用户和计算机”。
      2. 展开“用户”。
      3. 右键单击虚拟服务器的应用程序池使用的帐户,然后单击“属性”。
      4. 单击“成员属于”选项卡。

        验证 IIS_WPGSTS_WPG 都出现在“成员属于”列表中。如果其中之一没有列出或者两者均未列出,请根据具体情况将 IIS_WPG 组、STS_WPG 组或者这两个组添加到列表中。
  4. 重新启动 IIS 以回收应用程序池:
    1. 在 Internet 信息服务 (IIS) 管理器中,右键单击“ServerName”,指向“所有任务”,然后单击“重新启动 IIS”。
    2. 单击“在 ServerName 上重新启动 Internet 信息服务”,然后单击“确定”。
503 Service Unavailable 通常是由于服务器性原因导致服务中断,常见原因有服务器过载、正在进行维护、资源足以处理当前请求等。以下是一些解决该状态码问题的方法: ### 针对服务器维护情况 - **设置合理维护间**:若服务器在维护,应选择在业务低峰期进行,如深夜段。同,在维护前通过多种渠道,如网站公告、邮件、短信等通知用户,告知维护间范围和预计恢复间,让用户有心理准备。 - **提供友好提示页面**:在发送 503 响应,显示一个对用户友好的页面,清晰解释服务器正在维护及预计恢复间。可以在页面上设置倒计,增强用户的等待耐心。并且在 Retry - After 首部字段中包含服务恢复的预期间,方便客户端进行重试操作。 ### 针对服务器过载情况 - **优化服务器配置**:增加服务器的硬件资源,如升级 CPU、增加内存、扩大磁盘容量等,以提高服务器的处理能力。例如,将服务器的内存从 8GB 升级到 16GB,可能会缓解因内存足导致的过载问题。 - **负载均衡**:采用负载均衡器将请求均匀分配到多个服务器上,避免单个服务器承受过大压力。常见的负载均衡算法有轮询、加权轮询、IP 哈希等。例如,使用 Nginx 作为负载均衡器,将用户请求分发到多个后端服务器。 ```nginx http { upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; location / { proxy_pass http://backend; } } } ``` - **限流**:对进入服务器的请求进行限流,控制请求的速率,防止短间内大量请求涌入导致服务器过载。可以根据服务器的处理能力设置每秒允许的请求数量。例如,使用 Redis 和 Lua 脚本实现简单的限流功能。 ```lua -- lua 限流脚本 local key = KEYS[1] local limit = tonumber(ARGV[1]) local expire_time = tonumber(ARGV[2]) local current = tonumber(redis.call('get', key) or "0") if current + 1 > limit then return 0 else redis.call("INCRBY", key, "1") if current == 0 then redis.call("EXPIRE", key, expire_time) end return 1 end ``` ### 针对资源足情况 - **优化代码和应用程序**:检查应用程序的代码,优化算法和查询语句,减少资源消耗。例如,对数据库查询进行优化,避免全表扫描,添加合适的索引。 - **缓存机制**:使用缓存技术,如 Redis、Memcached 等,减少对后端资源的频繁访问。对于一些经常变化的数据,如网站的静态页面、商品信息等,可以将其缓存起来,当有请求直接从缓存中获取数据。 ```python import redis # 连接 Redis r = redis.Redis(host='localhost', port=6379, db=0) # 设置缓存 r.set('key', 'value') # 获取缓存 value = r.get('key') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值