从ColdFusion 8升级到ColdFusion 2018后,我们面临着服务器频繁崩溃的一些问题。
我们尝试了性能调优工具并修复了发现的所有问题。仍然每天至少崩溃1至2次。
我们通过更新字体修复了一些问题,比如字体缺失错误,并修复了`coldfusion-out.log1中发现的问题。
现在我们正在检查迭代,SQL查询是否存在sql超时或类似的事情。
除此之外,我们还有什么具体的工作来解决服务器关闭等问题吗?
我的建议。尽快安装FusionReactor监控工具。这将告诉您是否排队请求或是否有其他事情发生。
它是我用过的最好的工具之一。
这有两种可能性:
1)您已更新Coldfusion但尚未更新数据库版本(特别是oracle)。这可能导致CF使用过时的连接器驱动程序,这可能导致数据库连接偶尔挂起,从而导致CF服务器无响应。如果是这种情况,更新数据库可以解决问题。
2)看看你如何存储客户端变量。如果它们存储在注册表中,则服务器可能会间歇性地崩溃。如果您没有使用任何客户端变量,最好将存储更改为数据库或不更改。请记住,客户端变量不会影响会话活动,如自动注销等。
它可能与会话有关。每次客户进入会话时,Coldfusion似乎都会留下足迹,并且可能会根据您的cookie过期而占用一块内存。我猜你的服务器正逐渐耗尽内存。一种解决方案是减少客户端进入会话,另一种解决方案是老化的CF解决方案(例如,将ram gobs添加到您的服务器)。
以下是您可以添加的一些代码,可根据您网站的需求快速减少冗长会话的数量。我已经使用了它,它有助于但不会完全消除内存饥饿的CF应用程序。
<cfif (
(NOT Len( cgi.http_user_agent )) OR
REFind( "bot\b", cgi.http_user_agent ) OR
Find( "crawl", cgi.http_user_agent ) OR
REFind( "\brss", cgi.http_user_agent ) OR
Find( "feed", cgi.http_user_agent ) OR
Find( "news", cgi.http_user_agent ) OR
Find( "blog", cgi.http_user_agent ) OR
Find( "reader", cgi.http_user_agent ) OR
Find( "syndication", cgi.http_user_agent ) OR
Find( "coldfusion", cgi.http_user_agent ) OR
Find( "slurp", cgi.http_user_agent ) OR
Find( "google", cgi.http_user_agent ) OR
Find( "zyborg", cgi.http_user_agent ) OR
Find( "emonitor", cgi.http_user_agent ) OR
Find( "jeeves", cgi.http_user_agent )
)>
<cfset THIS.name = "myWebsite_06302019">
<cfset THIS.sessionManagement="Yes">
<cfset THIS.sessiontimeout="#createtimespan(0,0,0,5)#">
<!---<cfset THIS.sessioncookie.timeout = "7" >--->
<cfset THIS.sessioncookie.timeout = "-1" >
<cfelse>
<cfset THIS.name = "myWebsite_06302019">
<cfset THIS.sessionManagement="Yes">
<cfset THIS.sessiontimeout="#createtimespan(0,0,180,0)#">
<!---<cfset THIS.sessioncookie.timeout = "7" >--->
<cfset THIS.sessioncookie.timeout = "#createtimespan(0,0,180,0)#" >
</cfif>