我们在JRun 4.0上运行一个单一实例ColdFusion 9.0.1 Enterprise - 正如我刚刚读到的那样,CF 10将用Tomcat替换JRun.通过切换到Tomcat,我获得了哪些主要好处?
我在"中型"Amazon EC2实例上在Ubuntu上运行CF 9.0.1.CF一直在间歇性地进行癫痫发作(每天数次......但特别是没有隔离到高峰使用时间).在这种情况下,运行顶部让我(或类似的东西):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND
15855 wwwrun 20 0 1762m 730m 20m S 99.3 19.4 13:22.96 coldfusion9
Run Code Online (Sandbox Code Playgroud)
因此,它显然消耗了大部分服务器资源.在我的cfserver.log中,每个seize-up的前导中都出现以下错误:
java.lang.RuntimeException: Request timed out waiting for an available thread to run. You may want to consider increasing the number of active threads in the thread pool.
Run Code Online (Sandbox Code Playgroud)
如果我运行/ opt/coldfusion9/bin/coldfusion状态,我得到:
Pg/Sec DB/Sec CP/Sec Reqs Reqs Reqs AvgQ AvgReq AvgDB Bytes Bytes
Now Hi Now Hi Now Hi Q'ed Run'g TO'ed Time …Run Code Online (Sandbox Code Playgroud) 作为升级JRun的一部分,我们正在从1.4 JVM迁移到1.6 JVM.现在我得到一个非常奇怪的oracle db错误:"OALL8处于不一致状态".我已经确定了插入不使用绑定变量的查询的问题 - 所有内联参数.如果我在没有任何绑定变量的情况下运行查询,则会出现上述错误.只要我用绑定变量替换其中一个硬编码值 - 一切都可以正常工作.
另一个奇怪的是,在执行查询后,它实际上已提交给数据库.我可以从另一个会话连接并查看插入的行.我已经尝试在事务中包装查询,并且它似乎成功,因为没有显式事务,查询的行为没有改变.
以下是相关细节:
Java版本:1.6.0_12-b04
虚拟机版本:11.2-b01(HotSpot服务器)
Oracle服务器:10.2.0.4
Oracle客户端:11.1.0.7.0到ojdbc6.jar
更新:我使用的是cfqueryparam - 它们在oracle世界中被称为绑定变量.虽然这确实解决了当前的问题,但我们有一个相当大的遗留代码库,我们无法通过实际更新查询作为从CF7升级到CF8的一部分.
即使我已经确定了一个失败的特定情况(并将其封装在mxunit测试中) - 这并不意味着没有其他领域可能存在这个问题.我真的希望有一个解决方案来消除OALL8错误,而不是围绕它编码.
更新2:在使用我们的DBA检查后,他已将名为CURSOR_SHARING的参数设置为SIMILAR.Oracle默认为EXACT.发生的事情是当ColdFusion将查询关闭以执行时,Oracle正在将所有文字值转换为绑定变量,这似乎使ColdFusion感到困惑.将设置恢复为EXACT允许文字查询正常工作.
更新3: Oracle最终向我们发布了一个JDBC的带外补丁.它被识别为JDBC错误.最新的驱动程序应该在它们最终更新时包含它.如果您有支持,也可以通过他们的TAR系统请求补丁.
我在Windows机器上运行ColdFusion 8应用程序服务器.ColdFusion作为Windows服务运行.
我注意到System.out某些机器上的文件很大(1GB +).
例如
C:\ ColdFusion8 \运行\ BIN \的System.out
我知道这是运行CF作为服务时控制台输出结束的地方,但是有没有任何JRun设置允许我每隔x MB保存一次该文件,或者限制文件的大小或类似的东西?
所有提示赞赏!
重要编辑:
根据这里的讨论- 我认为重要的是要提到System.out由于大量代码写入该文件,文件在我们的机器上变得很大,即使用:
sys = createObject("java", "java.lang.System");
sys.out.println(...);
Run Code Online (Sandbox Code Playgroud)
如果您将CF作为控制台作业运行(即从命令行),这是一个有用的调试工具,因为旧版本的CF在使用时没有登录到控制台<cflog />.
我们已经要求我们的开发人员停止这种做法,而是使用<cflog />或writeLog()两者都登录到控制台以及应用程序日志(默认情况下).
我们需要确保CF7站点上的所有cookie都设置为HttpOnly.
我们使用jsessionid来控制我们的会话,而JRun并没有将它创建为HttpOnly.
虽然可以修改现有的cookie来添加此设置,但我们需要从一开始就将其设置为HttpOnly.
有什么建议?
相关问题:为HTTPS cookie设置安全标志.
我有两个服务器 - 一个生产和一个开发 - 在Windows Server 2008 R2上的IIS 7.5上运行ColdFusion 9.0.1.两者配置相同.我们有一个短暂的问题,经过几周到几个月的平稳运行时间,网站的某些部分(特别是CFIDE管理员门户网站和任何带有cfwindow标签的页面)将开始抛出"无法初始化类coldfusion.security.ESAPIUtils"错误.日志.
根据我几个月前卸载并重新安装所有热修复程序的一些 建议,五元组检查我是按照正确的顺序应用它们并遵循正确的指令集.
这并没有解决问题,但是当我梳理日志文件时,我注意到在jRun重启后,日志中出现了另一个与ESAPI相关的错误("无法以任何方式加载ESAPI.properties.失败.").我尝试添加了以下声明为java.args在jvm.config:
-Dorg.owasp.esapi.resources=E:\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\cfusion\lib
Run Code Online (Sandbox Code Playgroud)
这似乎解决了几个月的问题; 没有错误,事情很好.然后,昨天生产服务器再次开始抛出错误.我尝试重启JRun并重启服务器,错误仍然存在.开发服务器非常好.
我尝试创建一个只是实例化和重写ESAPIUtils实例的脚本.在dev上,它会转储有关该对象的元数据; 在生产中,页面导致错误.
我已经和这个问题一直争吵了近一年.有时它会在几天后自行解决,有时会持续数周.我还没有找到一种"诱导"这种状况的方法,所以我们一直坚持使用似乎有效的一段时间的不可测试的"修复",然后不这样做.
这似乎是完全切向的,但我们已经有了内置IsImageFile()函数为有效图像返回false的实例.IsImageFile()怪异似乎开始于"无法初始化类coldfusion.security.ESAPIUtils"疯狂开始之前.
以下是服务器版本:
ColdFusion Version: 9,0,1,274733
Operating System: Windows Server 2008 R2 amd64 6.1
Web Server Software: Microsoft-IIS/7.5
Java JVM: 1.8.0_05 Oracle Corporation
JEE Server: JRun/4.0
Security Hotfixes (9.0.1): APSB13-27, APSB13-19, APSB13-13, APSB13-10, ColdFusion 9.0.1 Cumulative Hotfix 4 (APSB13-03, APSB12-26, APSB12-21, APSB12-06, APSB11-29, APSB11-14, APSB11-04, APSB10-18), ColdFusion 9.0.1 Cumulative Hotfix 3, ColdFusion …Run Code Online (Sandbox Code Playgroud) 我继承了一个非常古老的JSP应用程序(JDK 1.3.1_15),并试图插入会话固定漏洞.
我在使用身份验证后成功地使当前会话无效,HttpSession.invalidate()但是在创建新会话时,会重新使用旧会话ID.
<%
// login.jsp
if (authenticated) {
request.getSession().invalidate();
// create new session and store data
HttpSession session = request.getSession();
session.putValue(...);
// etc
response.sendRedirect("logged-in.jsp");
return;
}
%>
Run Code Online (Sandbox Code Playgroud)
我可以在HTTP监视器中看到新的会话分配,它只是再次使用相同的号码.
-- Initial request response --
HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
-- login.jsp request response --
HTTP/1.1 302 Moved Temporarily
Location: http://example.com/logged-in.jsp
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
Run Code Online (Sandbox Code Playgroud)
在我使用session.invalidate()第二个Set-Cookie响应头之前根本不存在.
有没有人对如何生成新的会话ID有任何建议?我对JRUN4不是很熟悉,但是通过配置文档进行拖网并没有发现任何问题.
从JSP文件访问另一个类似于java类的JSP文件,这用于在JRun服务器中正常工作.现在我正在迁移到Tomcat服务器,这就是我得到的.我该如何解决这个问题?
这是另一个从常规jsp文件访问的.jsp文件:
<%!
public class ElemSetup {
}
%>
Run Code Online (Sandbox Code Playgroud) jrun ×8
coldfusion ×6
java ×4
jsp ×2
tomcat ×2
coldfusion-9 ×1
cookies ×1
esapi ×1
httponly ×1
httpsession ×1
jdbc ×1
jsessionid ×1
logging ×1
oracle ×1
ubuntu-11.10 ×1