故障排除指南SmartFoxServer 2X

故障排除指南

在本指南中,我们提供了一些技巧和技巧来克服在设置或运行服务器时遇到的典型问题。

无法到达服务器
Flash跨域政策问题
服务器启动问题
删除邮件
鬼用户

»无法到达服务器

一个常见的运行时问题是在首次安装后无法连接到测试或生产服务器。

一旦您的SFS2X实例正在运行,您应该确保没有防火墙(软件或硬件)阻止正在使用的TCP端口。具体来说,您应该将TCP端口9933和8080打开到“世界”。如果这是您无法做到的,您应该请系统管理员阅读本文档。

如果您的服务器没有直接连接到互联网,您还应确保NAT服务(端口转发)配置正确。
NAT服务允许将一个或多个服务从您的计算机暴露给公共互联网地址。例如,配置良好的路由器将将所有来自端口9933的流量发送到运行SmartFoxServer 2X的服务器计算机。

为了确定某些东西阻塞您的服务器,您可以尝试从外部telnet它的公共地址。 Telnet是大多数操作系统上可用的常用命令行工具,允许建立到远程主机的TCP连接。执行以下步骤来测试与服务器的连接。

打开系统控制台:
    在Windows下使用Windows Key + R,然后在出现的对话框中键入cmd。
    在MacOS X下,终端位于/ Applications / Utilities / Terminal中。
    在Linux下...好吧,每个Linux用户都应该知道如何启动终端! :)

键入以下内容:
telnet <ip-address> 9933

其中是要测试的IP地址。

你应该得到这样的东西:
Lapo$ telnet localhost 9933
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
服务器已经启动了一个新的连接,因此它是可访问的。
如果尝试失败,应仔细检查没有防火墙阻止通信,并且正确配置端口转发。

»Flash跨域政策问题

如果服务器在其公共地址可达,但是您仍然遇到连接问题,则应确保您不会在任何Flash Player沙箱限制中受到影响。出于安全考虑,Flash Player不允许连接到外部域,而不通过跨域策略文件设置明确的权限。

您可以在本白皮书中了解有关Flash Player安全设置的更多信息(它位于SFS 1文档中,但相同的概念适用于SFS2X)。

注意
SFS2X可以通过套接字自动提供策略文件。该文件位于SFS2X / config / crossdomain.xml,可以编辑以满足您的要求。
»服务器启动问题

如果服务器未完成启动阶段,我们建议检查日志文件。
SFS2X运行两阶段启动顺序:首先启动低级网络引擎,然后SmartFox服务将依次启动,直到服务器准备就绪。

第一个低级引导阶段在{sfs2x-install-dir} / SFS2X / logs / boot /文件夹中生成详细的报告。 SmartFoxServer操作日志位于{sfs2x-install-dir} / SFS2X / logs /文件夹中。

日志文件每天都会旋转,并通过文件名附加的日期轻松识别。
»丢弃的邮件

在我们的支持委员会提出的问题中,很多都围绕着放弃信息的主题。有时您可能会注意到来自AdminTool的仪表板模块的计数非常高,特别是对于传出的已删除消息。

传入删除的消息非常简单:SFS2X丢弃任何格式不正确或不符合其协议的消息。此外,它将丢弃尺寸大于maxIncomingRequestSize参数的config / core.xml文件中设置的值的邮件。

“传出删除邮件”值保留未发送到其各自收件人的服务器邮件的计数。在讨论放弃信息的可能原因之前,我们来看下面的图表:
这里写图片描述
服务器将传出消息队列关联到每个连接的会话,以便存储不能立即写入的数据。事实上,服务器尝试尽可能快地传递每个数据包,但有时用户连接拥塞,很少甚至无法发送数据。
在这种情况下,服务器被迫将剩余的数据位存储在队列中,并等待网络管道再次可用于新的传输。

根据用户配置,SmartFoxServer将保留每个队列中的数据,直到其容量耗尽:此时消息将被丢弃。这种机制允许服务器保护自身不受限制的内存分配,最终可能会导致Java VM崩溃。

您可以从AdminTool中的服务器配置器模块微调服务器对丢弃消息的容差。
»丢弃传出邮件的原因

客户端连接不良或慢:用户响应速度慢,带宽不足以跟上服务器响应。这将导致套接字很快变得忙碌,并迫使服务器将数据保留在队列中。

太频繁发送的数据太多:这是以前的主题略有变化。只有这一次,我们不一定责怪客户端连接,但这可能取决于服务器逻辑发送太大的数据或太频繁的更新。重要的是要记住,在互联网上,每个连接都会经历一定的延迟时间,通常在50到200毫秒之间变化,但也可以达到几秒钟。

重要的是要记住这些限制,并使用特定的客户端和服务器算法解决这些限制,以减少滞后。一般来说,不建议通过TCP发送超过10-20次更新/秒,而UDP数据包的值可能会更高。

如果您有兴趣了解网络延迟的更多信息,建议您阅读本文。

服务器端的带宽不足:当您达到主机带宽的容量时,您将会经历一般的网络性能下降。您的玩家可能会开始抱怨游戏或应用程序变得越来越慢,您应该会看到上传的消息数量不断增加。

您可以通过每天监控带宽使用情况轻松检测到此问题。

»Ghost用户

Ghost用户可以在不完整的TCP断开连接时生成。 TCP传输协议使用客户端和服务器之间的4路交换来关闭以前打开的连接。如果在交换过程中,通信突然中断,则断开连接不会完成,使客户端处于部分断开状态。

低级TCP堆栈使用几个标志来维护可以使用命令行中的netstat实用程序检查的每个连接的状态。要介绍TCP内部工作的技术细节,本节不属于本节的范围,但如果您想了解更多信息,可以查看以下资源:
TCP / IP传输协议
Netstat工具

»Ghost用户的常见原因

Ghost用户在LAN / WAN环境中工作时极为罕见,因为连接是直接的,拥塞很少。另一方面,在互联网上,情况是非常不同的,因为客户端经历了许多网络跳跃,它们表示数据包从连接的一端(例如客户端)到另一端的路由器/防火墙/网关(例如服务器)。

在这种情况下,存在一致的数量的变量,可能导致连接丢失,包括网络拥塞,超时,重置,不可恢复的分组丢失等。当发生这种情况时,用户套接字可以保持在“延迟状态”长时间,由于双方各方等待通讯的最后一点。

在此过程完成之前,无法通知断开事件。因此,服务器不知道发生了什么,开发人员的自定义扩展代码也在等待USER_DISCONNECT事件。

根据操作系统的不同,每个TCP实现都有稍微不同的规则和超时设置来处理延迟连接:最终所有这些套接字将被强制关闭,导致断开连接事件冒泡到SmartFoxServer及其扩展。
»如何处理鬼魂

自从版本2.4以来,SmartFoxServer 2X尝试通过运行一个调度任务(称为Ghost Hunter)来减少挂起连接的影响,从而检查每个连接的完整性,并删除那些陈旧的连接。

服务器的配置对于减少此问题也很重要,特别是有两个可以通过AdminTool进行调整的设置:

ServerConfigurator>会话最大空闲时间:调整单个会话的最大空闲时间。会话仅由客户端用于登录服务器。一旦他们登录,客户端就变成了一个用户。因此,建议将此值保持在10-40秒的范围内。任何其他可能打开与服务器的连接而不登录的其他客户端将被快速删除。
ZoneConfigurator>用户最大空闲时间:调整用户的最大空闲时间。该值可以根据应用程序的工作原理以及允许用户在不断开的情况下保持空闲状态的时间有所改变。一般来说,我们建议避免超过30分钟的值。

检测网络问题

重要的是要注意,Ghost用户应该在生产环境中很少出现,不应超过CCU总数的1-2%。如果发生这种现象发生率较高,则必须对生产环境进行全面检查,其中包括:

服务器配置
带宽资源(监控使用和峰值)
网络配置(内核设置,路由器,防火墙)
安全(DDOS攻击)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值