<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ColdFusion Consultant Blog</title>
	<atom:link href="http://www.cfconsultant.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cfconsultant.com/blog</link>
	<description>A Blog for ColdFusion Professionals</description>
	<lastBuildDate>Thu, 29 Jul 2010 14:52:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hello from CFUnited 2010</title>
		<link>http://www.cfconsultant.com/blog/2010/07/29/hello-from-cfunited-2010/</link>
		<comments>http://www.cfconsultant.com/blog/2010/07/29/hello-from-cfunited-2010/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 14:46:18 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[CFUnited]]></category>
		<category><![CDATA[FusionReactor]]></category>
		<category><![CDATA[JRun]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Railo]]></category>

		<guid isPermaLink="false">http://www.cfconsultant.com/blog/?p=92</guid>
		<description><![CDATA[A big hello from CFUnited!
Myself (David Stockton) and my colleagues (Darren Pywell &#38; David Tattersall) are all at CFUnited this week. We have a FREE copy of FusionAnalytics to give away so don&#8217;t be shy &#8211; come and speak to us for a chance to win!!
Plus, ask nicely and we&#8217;ve got FREE goodies for everyone [...]]]></description>
			<content:encoded><![CDATA[<p>A big hello from CFUnited!</p>
<p>Myself (David Stockton) and my colleagues (Darren Pywell &amp; David Tattersall) are all at CFUnited this week. We have a <strong>FREE copy of FusionAnalytics to give away</strong> so don&#8217;t be shy &#8211; come and speak to us for a chance to win!!</p>
<p>Plus, ask nicely and we&#8217;ve got <strong>FREE goodies for everyone</strong> we speak to!</p>
<p>We&#8217;re in the vendor area between Adobe &amp; Railo &#8211; look for the ShareDox, FusionReactor, FusionAnalytics &amp; Intergral banners&#8230; plus this good looking guy:</p>
<p><a href="http://www.cfconsultant.com/blog/wp-content/uploads/2010/07/cf-guru.jpg"><img class="aligncenter size-medium wp-image-93" title="cf-guru" src="http://www.cfconsultant.com/blog/wp-content/uploads/2010/07/cf-guru-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/07/29/hello-from-cfunited-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Update 1 &#8211; 9.0.1</title>
		<link>http://www.cfconsultant.com/blog/2010/07/20/coldfusion-update-1-9-0-1/</link>
		<comments>http://www.cfconsultant.com/blog/2010/07/20/coldfusion-update-1-9-0-1/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:34:48 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[JRun]]></category>
		<category><![CDATA[Platform]]></category>

		<guid isPermaLink="false">http://www.cfconsultant.com/blog/?p=88</guid>
		<description><![CDATA[ColdFusion 9.0.1 has been released for about a week now. I&#8217;m sure everyone has done due diligence in their test environments, run a full test-suite and deployed to production right?
http://www.adobe.com/support/coldfusion/downloads_updates.html#cf9
Well it&#8217;s not always that simple is it? So if you want some professional help from the experts then call the experts &#8211; we&#8217;re ready &#38; [...]]]></description>
			<content:encoded><![CDATA[<p>ColdFusion 9.0.1 has been released for about a week now. I&#8217;m sure everyone has done due diligence in their test environments, run a full test-suite and deployed to production right?</p>
<p><a href="http://">http://www.adobe.com/support/coldfusion/downloads_updates.html#cf9</a></p>
<p>Well it&#8217;s not always that simple is it? So if you want some professional help from the experts then call the experts &#8211; we&#8217;re ready &amp; waiting to help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/07/20/coldfusion-update-1-9-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identifying slow upload connections with FusionReactor Crash Protection emails</title>
		<link>http://www.cfconsultant.com/blog/2010/07/08/identifying-slow-upload-connections-with-fusionreactor-crash-protection-emails/</link>
		<comments>http://www.cfconsultant.com/blog/2010/07/08/identifying-slow-upload-connections-with-fusionreactor-crash-protection-emails/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:35:17 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[Crash Protection]]></category>
		<category><![CDATA[FusionReactor]]></category>
		<category><![CDATA[Monitoring]]></category>

		<guid isPermaLink="false">http://www.cfconsultant.com/blog/?p=83</guid>
		<description><![CDATA[We consult with a lot of different types of company. Sometimes there&#8217;s a lot of security process to deal with. This is great when you&#8217;re trying to stop un-authorized access but can sometimes hamper the speed of response an outside agency can give.
In one such incident we were trying to identify the IP address of [...]]]></description>
			<content:encoded><![CDATA[<p>We consult with a lot of different types of company. Sometimes there&#8217;s a lot of security process to deal with. This is great when you&#8217;re trying to stop un-authorized access but can sometimes hamper the speed of response an outside agency can give.</p>
<p>In one such incident we were trying to identify the IP address of a slow uploading client &#8211; this we could then link to a client account and identify where the issue was coming from. At the first stage we weren&#8217;t able to access any of the remote clients network. Using good old email the client was able to send me a copy of all the FusionReactor Crash Protection alerts. These fire under certain conditions alerting the recipient of a potential issue. You can read more about <a href="http://www.fusion-reactor.com/fr/featurefocus/crashprotection.cfm" target="_blank">crash protection on the FusionReactor website</a>.</p>
<p>Now the emails are a great feature but they&#8217;re not very easy to analyse over 100&#8217;s of emails. So we created a quick tool to analyse the crash protection emails for just this sort of event. And now we&#8217;re making it available to you&#8230; FREE!</p>
<p><a href="http://www.cfconsultant.com/blog/wp-content/uploads/2010/07/read.zip">FusionReactor CrashProtection EMail Analyzer</a></p>
<ol>
<li>Download &amp; unzip the contents of the download into a folder under your ColdFusion webroot (eg c:\inetpub\wwwroot\fr-mail-analyzer)</li>
<li>Create a new folder called &#8220;mails&#8221; under this folder (eg c:\inetpub\wwwroot\fr-mail-analyzer\mails)</li>
<li>Put all your *.eml files inside the mails folder &#8211; I recommend naming them 01FusionReactor Crash Protection Alert [xxxxx-y], 01FusionReactor Crash Protection Alert [xxxxx-y], 02FusionReactor Crash Protection Alert [xxxxx-y], etc</li>
<li>Open your web-browser and point it at the &#8220;read.cfm&#8221; file</li>
</ol>
<p>Now you have a list of all the slow pages (over 60seconds) and which IPs they&#8217;ve come from and which page(s) they&#8217;ve hit &#8211; all without direct access to FusionReactor. Also great if you&#8217;ve only got access to the emails (eg your logs have rotated).</p>
<p>Phew &#8211; Sound like too much work? Save the hassle and <a href="http://www.fusion-analytics.com/fa/">get FusionAnalytics</a> or contact us now!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/07/08/identifying-slow-upload-connections-with-fusionreactor-crash-protection-emails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo &#8211; Get the most out of your FusionReactor purchase</title>
		<link>http://www.cfconsultant.com/blog/2010/04/13/howto-get-the-most-out-of-your-fusionreactor-purchase/</link>
		<comments>http://www.cfconsultant.com/blog/2010/04/13/howto-get-the-most-out-of-your-fusionreactor-purchase/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 09:25:15 +0000</pubDate>
		<dc:creator>FusionReactor</dc:creator>
				<category><![CDATA[FusionReactor]]></category>
		<category><![CDATA[Monitoring]]></category>

		<guid isPermaLink="false">http://www.cfconsultant.com/blog/?p=80</guid>
		<description><![CDATA[Our colleagues at FusionReactor have published some great &#8211; quick-start HowTo guides. There&#8217;s information on attacking problems from two stand-points (pro-actively and re-actively) aswell as a user-contributed user-guide. You can check them out here:
http://www.fusion-reactor.com/fr/howto/
&#8230; or read the official documentation here:
http://www.fusion-reactor.com/fr/support.cfm#doc
You may also be interested in our training webinars (which get some great feedback!) &#8211; for [...]]]></description>
			<content:encoded><![CDATA[<p>Our colleagues at FusionReactor have published some great &#8211; quick-start HowTo guides. There&#8217;s information on attacking problems from two stand-points (pro-actively and re-actively) aswell as a user-contributed user-guide. You can check them out here:</p>
<p style="padding-left: 30px;"><a href="http://www.fusion-reactor.com/fr/howto/">http://www.fusion-reactor.com/fr/howto/</a></p>
<p>&#8230; or read the official documentation here:</p>
<p style="padding-left: 30px;"><a href="http://www.fusion-reactor.com/fr/support.cfm#doc">http://www.fusion-reactor.com/fr/support.cfm#doc</a></p>
<p>You may also be interested in our training webinars (which get some great feedback!) &#8211; for more details, please check the FusionReactor site:</p>
<p style="padding-left: 30px;"><a href="http://www.fusion-reactor.com/support/training/">http://www.fusion-reactor.com/support/training/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/04/13/howto-get-the-most-out-of-your-fusionreactor-purchase/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Killing Rogue Requests &#8211; Going native, don&#8217;t stop me now!</title>
		<link>http://www.cfconsultant.com/blog/2010/02/04/killing-rogue-requests-going-native-dont-stop-me-now/</link>
		<comments>http://www.cfconsultant.com/blog/2010/02/04/killing-rogue-requests-going-native-dont-stop-me-now/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 11:45:30 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[FusionReactor]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[abort requests]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Crash Protection]]></category>

		<guid isPermaLink="false">http://www.cfconsultant.com/blog/?p=64</guid>
		<description><![CDATA[FusionReactor is a great monitoring tool and one of my favorite features is the ability to kill rogue requests. FusionReactor is sometimes limited by Java itself. Java has a known limitation that threads running &#8220;Native Code&#8221; can&#8217;t be killed (until the thread returns from the native code block).
What is Native Code?
Underlying all your ColdFusion goodness [...]]]></description>
			<content:encoded><![CDATA[<p>FusionReactor is a great monitoring tool and one of my favorite features is the ability to kill rogue requests. FusionReactor is sometimes limited by Java itself. Java has a known limitation that threads running &#8220;Native Code&#8221; can&#8217;t be killed (until the thread returns from the native code block).</p>
<h2>What is Native Code?</h2>
<p>Underlying all your ColdFusion goodness is Java, underlying the Java is the runtime environment typically implemented in C/C++ code. When you hit a code-block that must &#8220;go native&#8221; this is inside the C/C++ code typically waiting for an event to occur. When a thread is executing this native method the thread cannot be killed by the JVM.</p>
<h2>What to look for?</h2>
<p>Some of the most common examples where native code is used are:</p>
<ul>
<li>CFHTTP calls</li>
<li>WebService calls</li>
<li>JDBC Queries</li>
</ul>
<p>What you&#8217;re looking for is &#8220;Native Method&#8221; in the stack trace of the thread. Let&#8217;s look at some concrete examples&#8230;</p>
<h3>CFHTTP Calls</h3>
<p>Example CF Code:</p>
<pre style="padding-left: 30px;">&lt;cfhttp url="http://localhost/blogs/dont_stop_me_now/slow.cfm" /&gt;</pre>
<p>Example Java Stack Trace (available from FusionReactor):</p>
<pre style="padding-left: 30px;">java.net.SocketInputStream.socketRead0(SocketInputStream.java:???)<strong>[Native Method]</strong>
java.net.SocketInputStream.read(SocketInputStream.java:129)
HTTPClient.BufferedInputStream.fillBuff(BufferedInputStream.java:172)
HTTPClient.BufferedInputStream.read(BufferedInputStream.java:110)
HTTPClient.StreamDemultiplexor.read(StreamDemultiplexor.java:273)
HTTPClient.RespInputStream.read(RespInputStream.java:155)
HTTPClient.RespInputStream.read(RespInputStream.java:115)
HTTPClient.Response.readResponseHeaders(Response.java:1000)
HTTPClient.Response.getHeaders(Response.java:720)
HTTPClient.Response.getStatusCode(Response.java:259)
HTTPClient.RetryModule.responsePhase1Handler(RetryModule.java:83)
HTTPClient.HTTPResponse.handleResponse(HTTPResponse.java:761)
HTTPClient.HTTPResponse.getStatusCode(HTTPResponse.java:191)
coldfusion.tagext.net.HttpTag.connHelper(HttpTag.java:850)
coldfusion.tagext.net.HttpTag.doEndTag(HttpTag.java:1140)
cfslow_cfhttp2ecfm1758959420.runPage(<strong>C:\inetpub\wwwroot\blogs\dont_stop_me_now\slow_cfhttp.cfm:1</strong>)
coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)
</pre>
<h3>WebService Calls</h3>
<p>Example CF Code:</p>
<pre style="padding-left: 30px;">&lt;cfset ws = createObject("webservice", "http://localhost/blogs/dont_stop_me_now/slow.cfc?wsdl") /&gt;
&lt;cfset ws.goSlow() /&gt;</pre>
<p>Example Java Stack Trace (available from FusionReactor):</p>
<pre style="padding-left: 30px;">java.net.SocketInputStream.socketRead0(SocketInputStream.java:???)<strong>[Native Method]</strong>
java.net.SocketInputStream.read(SocketInputStream.java:129)
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
java.io.BufferedInputStream.read(BufferedInputStream.java:237)
org.apache.axis.transport.http.HTTPSender.readHeadersFromSocket(HTTPSender.java:581)
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:142)
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
org.apache.axis.client.Call.invokeEngine(Call.java:2765)
org.apache.axis.client.Call.invoke(Call.java:2748)
org.apache.axis.client.Call.invoke(Call.java:2424)
org.apache.axis.client.Call.invoke(Call.java:2347)
org.apache.axis.client.Call.invoke(Call.java:1804)
blogs.dont_stop_me_now.SlowCfcSoapBindingStub.goSlow(SlowCfcSoapBindingStub.java:157)
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:???)[Native Method]
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
coldfusion.xml.rpc.ServiceProxy.invokeImpl(ServiceProxy.java:224)
coldfusion.xml.rpc.ServiceProxy.invoke(ServiceProxy.java:154)
coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
cfslow_ws2ecfm1005604111.runPage(<strong>C:\inetpub\wwwroot\blogs\dont_stop_me_now\slow_ws.cfm:2</strong>)
coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)</pre>
<h3>JDBC Queries</h3>
<p>Example CF Code:</p>
<pre style="padding-left: 30px;">&lt;cfquery name="wait" datasource="test"&gt;
   SELECT 1 waitfor delay '000:00:10:000'
&lt;/cfquery&gt;</pre>
<p>Example Java Stack Trace (available from FusionReactor):</p>
<pre style="padding-left: 30px;">java.net.SocketInputStream.socketRead0(SocketInputStream.java:???)<strong>[Native Method]</strong>
java.net.SocketInputStream.read(SocketInputStream.java:129)
macromedia.jdbc.sqlserver.SQLServerByteOrderedDataReader.makeMoreDataAvailable(null:???)
macromedia.jdbc.sqlserver.SQLServerByteOrderedDataReader.receive(null:???)
macromedia.jdbc.sqlserver.tds.TDSExecuteRequest.submitRequest(null:???)
macromedia.jdbc.sqlserver.tds.TDSRequest.execute(null:???)
macromedia.jdbc.sqlserver.SQLServerImplStatement.execute(null:???)
macromedia.jdbc.sqlserverbase.BaseStatement.commonExecute(null:???)
macromedia.jdbc.sqlserverbase.BaseStatement.executeInternal(null:???)
macromedia.jdbc.sqlserverbase.BaseStatement.execute(null:???)
coldfusion.server.j2ee.sql.JRunStatement.execute(JRunStatement.java:348)
coldfusion.sql.Executive.executeQuery(Executive.java:1229)
coldfusion.sql.Executive.executeQuery(Executive.java:1008)
coldfusion.sql.Executive.executeQuery(Executive.java:939)
coldfusion.sql.SqlImpl.execute(SqlImpl.java:341)
coldfusion.tagext.sql.QueryTag.executeQuery(QueryTag.java:843)
coldfusion.tagext.sql.QueryTag.doEndTag(QueryTag.java:533)
cfslow_db2ecfm445915345.runPage(<strong>C:\inetpub\wwwroot\blogs\dont_stop_me_now\slow_db.cfm:1</strong>)
coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)</pre>
<h2>Why!?</h2>
<p>All these examples are in native methods for socket reading. Socket functions (both reading and writing) are the most commonly found native methods in stack traces.</p>
<h2>What can I do?</h2>
<p>Unfortunately, the only current work-around is to restart your server. But this is a Java limitation that even without FusionReactor you would still have the problem &#8211; FusionReactor is just giving you visibility. The <em><strong>real</strong></em> solution is to investigate the root cause of the problem and solve that &#8211; that&#8217;s where we come in! We&#8217;re experts in this field and working on issues like this on a daily basis &#8211; give us a call!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/02/04/killing-rogue-requests-going-native-dont-stop-me-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FusionReactor Crash Protection &#8211; Regular Expressions &#8220;HowTo&#8221;</title>
		<link>http://www.cfconsultant.com/blog/2010/02/02/fusionreactor-crash-protection-regular-expressions-howto/</link>
		<comments>http://www.cfconsultant.com/blog/2010/02/02/fusionreactor-crash-protection-regular-expressions-howto/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 17:03:51 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Crash Protection]]></category>
		<category><![CDATA[FusionReactor]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[abort requests]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[crashprotection.cfm]]></category>
		<category><![CDATA[my_[^t]*_page.cfm]]></category>

		<guid isPermaLink="false">http://cfconsultant.com/blog/?p=39</guid>
		<description><![CDATA[FusionReactor &#8211; the leading ColdFusion server monitoring software &#8211; has a nifty Crash Protection feature allowing it to abort requests that take too long. This works in a similar way to the ColdFusion server page timeouts but at a lower level allowing FusionReactor to stop requests under many more circumstances. FusionReactor also gives you the [...]]]></description>
			<content:encoded><![CDATA[<p>FusionReactor &#8211; the leading ColdFusion server monitoring software &#8211; has a nifty Crash Protection feature allowing it to abort requests that take too long. This works in a similar way to the ColdFusion server page timeouts but at a lower level allowing FusionReactor to stop requests under many more circumstances. FusionReactor also gives you the options not to abort the request, but just to email you a stack trace of the slow running page. There are several forms of crash protection FusionReactor provides but I won&#8217;t get in to those just now &#8211; take a look at the FusionReactor site for more information ( http://www.fusion-reactor.com/fr/featurefocus/crashprotection.cfm ).</p>
<p>One of the ways in which FusionReactor timeout protection is better is the ability to configure include (or exclude) lists of page URLs. This can be done with regular expressions. Let&#8217;s look at a couple of examples&#8230;</p>
<p>First of all we need to imagine our directory layout:</p>
<ul>
<li>wwwroot
<ul>
<li>public
<ul>
<li>my_first_page.cfm</li>
<li>my_second_page.cfm</li>
<li>my_third_page.cfm</li>
<li>my_fourth_page.cfm</li>
</ul>
</li>
<li>scheduled_tasks
<ul>
<li>task1.cfm</li>
<li>task2.cfm</li>
<li>task3.cfm</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>In our examples, we&#8217;ll assume we&#8217;re looking at timeout protection and the crash protection settings are all configured for all URLs.</p>
<h2>Example 1</h2>
<p>Let&#8217;s look at exlcluding everything inside the &#8220;scheduled_tasks&#8221; folder. The first step is to ensure the restrictions are &#8220;enabled&#8221; and the behaviour mode is to &#8220;ignore matching requests&#8221;:</p>
<p style="text-align: center;"><a href="http://cfconsultant.com/blog/wp-content/uploads/2010/02/cp_settings_enabled.jpg"><img class="size-full wp-image-40 aligncenter" title="Crash Protection Settings Enabled" src="http://cfconsultant.com/blog/wp-content/uploads/2010/02/cp_settings_enabled.jpg" alt="Crash Protection Settings Enabled" width="300" /></a></p>
<p style="text-align: left;">Next, we add a new regular expression RegEx for the exclusion:</p>
<p style="text-align: center;"><a href="http://cfconsultant.com/blog/wp-content/uploads/2010/02/cp_restrictions_regex.jpg"><img class="size-full wp-image-41 aligncenter" title="Crash Protection Restrictions" src="http://cfconsultant.com/blog/wp-content/uploads/2010/02/cp_restrictions_regex.jpg" alt="Crash Protection Restrictions" width="300" /></a></p>
<p style="text-align: left;">You can see the RegEx matches on path only (unless you choose to include hostname). Additionally it optionally matches URL parameters and can exclude URL from statistics (eg average request time).</p>
<p style="text-align: left;">The RegEx&#8217;s are standard Java patterns. The online help describes some examples which are available from the FR interface from your server or on the FusionReactor website &#8211; http://www.fusion-reactor.com/fr/help/help.htm#creating_a_regular_expression_exclusion.htm</p>
<p style="text-align: left;">The Java (1.4.2) Pattern docs are available here: http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html</p>
<h2 style="text-align: left;">Example 2</h2>
<p>Exclude the public files &#8220;my_&#8230;._page.cfm&#8221; where &#8220;&#8230;.&#8221; does not include the character &#8220;t&#8221;&#8230;</p>
<p style="padding-left: 30px;">/public/my_[^t]*_page.cfm</p>
<p>[^t] = any character except &#8220;t&#8221;</p>
<p>* = any number of the previous matching group (ie [^t])</p>
<p>Hopefully this gets you on the way to configuring not only your crash protection but excluding your scheduled tasks from server level statistics so you get a better idea of the stats for public facing traffic. We can offer a lot of help and advice and have a wide range of consulting &amp; development services available to assist you no matter the project size.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/02/02/fusionreactor-crash-protection-regular-expressions-howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Payment Card Industry &#8211; Data Security Standards (PCI-DSS) and HTTPS SSL/TLS Connections</title>
		<link>http://www.cfconsultant.com/blog/2010/01/29/payment-card-industry-data-security-standards-pci-dss-and-https-ssltls-connections/</link>
		<comments>http://www.cfconsultant.com/blog/2010/01/29/payment-card-industry-data-security-standards-pci-dss-and-https-ssltls-connections/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 18:01:40 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[Pound]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Card Payments]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[PCI-DSS]]></category>
		<category><![CDATA[SSL/TSL]]></category>

		<guid isPermaLink="false">http://cfconsultant.com/blog/?p=35</guid>
		<description><![CDATA[The PCI-DSS standards are designed to help protect card-holder data. The specific section we&#8217;re interested in is section 4.1 of the v1.2 revision of the standards which are available for download here: https://www.pcisecuritystandards.org/security_standards/pci_dss_download_agreement.html
The standards layout that you should use strong cryptography and security protocols when transmitting card data over open, public networks (ie the Internet).
If [...]]]></description>
			<content:encoded><![CDATA[<p>The PCI-DSS standards are designed to help protect card-holder data. The specific section we&#8217;re interested in is section 4.1 of the v1.2 revision of the standards which are available for download here: https://www.pcisecuritystandards.org/security_standards/pci_dss_download_agreement.html</p>
<p>The standards layout that you should use strong cryptography and security protocols when transmitting card data over open, public networks (ie the Internet).</p>
<p>If you want to secure any data sent over HTTPS you need to make sure the protocols and ciphers used are secure. In practice, this means disabling SSLv2 and weak ciphers. This has to be done at the SSL endpoint &#8211; so if you&#8217;re using a load balancer, firewall or similar to terminate your SSL connections you&#8217;ll need to make the changes there.</p>
<p>We can offer advice and resell SSL terminating end-points. We also work with open-source SSl terminating solutions such as Pound ( http://www.apsis.ch/pound/ ).</p>
<h2>How To Check</h2>
<p>Use the SSLScan tool &#8211; http://sourceforge.net/projects/sslscan/</p>
<p>Use OpenSSL from the command line:</p>
<p><strong>SSLv2</strong></p>
<pre># openssl s_client -ssl2 -connect www.HOSTNAME.com:443</pre>
<p><strong>Weak ciphers</strong></p>
<pre># openssl s_client -connect www.HOSTNAME.com:443 -cipher LOW:EXP</pre>
<h2>How to Fix</h2>
<p>Apache 2.x:</p>
<pre>SSLProtocol -ALL +SSLv3 +TLSv1</pre>
<pre>SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM</pre>
<p>Pound:</p>
<pre>Ciphers "SSLv3:TLSv1:-LOW:-aNULL:-ADH:-EXP:-eNULL"</pre>
<p>IIS:</p>
<p>(Unfortunately you have to edit the registry&#8230;)</p>
<pre>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128]
"Enabled"=dword:0000000</pre>
<p>You may also be interested to know that active CF community member Pete Freitag has created a commercial tool to help you make these changes in IIS &#8211; http://foundeo.com/products/iis-weak-ssl-ciphers/</p>
<p>Of course not everyone&#8217;s environment is straight-forward and often you&#8217;ll hit issues or knock-on effects &#8211; so get the experts in&#8230; we&#8217;re waiting!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/01/29/payment-card-industry-data-security-standards-pci-dss-and-https-ssltls-connections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New system configuration &#8211; It&#8217;s not just the application server!</title>
		<link>http://www.cfconsultant.com/blog/2010/01/28/new-system-configuration-its-not-just-the-application-server/</link>
		<comments>http://www.cfconsultant.com/blog/2010/01/28/new-system-configuration-its-not-just-the-application-server/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 10:29:06 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Platform]]></category>
		<category><![CDATA[application server]]></category>
		<category><![CDATA[CF Setup]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ICMP Echo]]></category>
		<category><![CDATA[Optimise system]]></category>

		<guid isPermaLink="false">http://cfconsultant.com/blog/?p=28</guid>
		<description><![CDATA[A common consulting engagement for us is configuring a new system for optimal use. It&#8217;s not just the application server that&#8217;ll need configuring, don&#8217;t forget the application server relies on a lot of underlying infrastructure including the network and OS. Often this stage gets over-looked or you&#8217;ll (often incorrectly) assume your hosting provider will have [...]]]></description>
			<content:encoded><![CDATA[<p>A common consulting engagement for us is configuring a new system for optimal use. It&#8217;s not just the application server that&#8217;ll need configuring, don&#8217;t forget the application server relies on a lot of underlying infrastructure including the network and OS. Often this stage gets over-looked or you&#8217;ll (often incorrectly) assume your hosting provider will have performed these steps already.</p>
<p>Every application is different, there&#8217;s no golden rules but there are some simple steps you can take to improve performance, security &amp; stability. For a typical web &amp; application server machine let&#8217;s look at an example Linux setup. Here&#8217;s just the tip of the iceberg&#8230;</p>
<h2>Tune TCP/IP Kernel Parameters</h2>
<ul>
<li>Disable response to ICMP Echo broadcasts
<ul>
<li>net.ipv4.icmp_echo_ignore_broadcasts = 1</li>
</ul>
</li>
</ul>
<ul>
<li>Filter packets not meant for this network.
<ul>
<li>net.ipv4.conf.eth0.rp_filter=1</li>
<li>net.ipv4.conf.lo.rp_filter=1</li>
<li>net.ipv4.conf.default.rp_filter=1</li>
<li>net.ipv4.conf.all.rp_filter=1</li>
</ul>
</li>
</ul>
<ul>
<li>Set buffer TCP buffer MAX limits
<ul>
<li>net.core.rmem_max = 16777216</li>
<li>net.core.wmem_max = 16777216</li>
</ul>
</li>
</ul>
<ul>
<li>Increase Linux autotuning TCP buffer limits (min, default, and max number of bytes to use)
<ul>
<li>net.ipv4.tcp_rmem = 4096 10000000 16777216</li>
<li>net.ipv4.tcp_wmem = 4096 65536 16777216</li>
</ul>
</li>
</ul>
<ul>
<li>Disable IP spoofing
<ul>
<li>net.ipv4.conf.eth0.accept_source_route=0</li>
<li>net.ipv4.conf.lo.accept_source_route=0</li>
<li>net.ipv4.conf.default.accept_source_route=0</li>
<li>net.ipv4.conf.all.accept_source_route=0</li>
</ul>
</li>
</ul>
<ul>
<li>TIME_WAIT sockets for new connections can be reused. This helps on any server that receives many connections at the same time.
<ul>
<li>net.ipv4.tcp_tw_reuse=1</li>
<li>net.ipv4.tcp_fin_timeout=30</li>
</ul>
</li>
</ul>
<ul>
<li>Move keepalive from 2hrs to 30 min. (May want to tune this up or down)
<ul>
<li>net.ipv4.tcp_keepalive_time=1800</li>
</ul>
</li>
</ul>
<ul>
<li>Help protect from denial-of-service (syn-flood) attack:
<ul>
<li>net.ipv4.tcp_max_syn_backlog=4096</li>
</ul>
</li>
</ul>
<ul>
<li>Allow redirects from trusted sources (pick only trusted sources)
<ul>
<li>net.ipv4.conf.eth0.secure_redirects=1</li>
<li>net.ipv4.conf.lo.secure_redirects=1</li>
<li>net.ipv4.conf.default.secure_redirects=1</li>
<li>net.ipv4.conf.all.secure_redirects=1</li>
</ul>
</li>
</ul>
<ul>
<li>Don’t allow ICMP redirects (pick only un-trusted sources)
<ul>
<li>net.ipv4.conf.eth0.accept_redirects=0</li>
<li>net.ipv4.conf.lo.accept_redirects=0</li>
<li>net.ipv4.conf.default.accept_redirects=0</li>
<li>net.ipv4.conf.all.accept_redirects=0</li>
</ul>
</li>
</ul>
<ul>
<li>Do not send redirects (we’re not acting as a router)
<ul>
<li>net.ipv4.conf.eth0.send_redirects=0</li>
<li>net.ipv4.conf.lo.send_redirects=0</li>
<li>net.ipv4.conf.default.send_redirects=0</li>
<li>net.ipv4.conf.all.send_redirects=0</li>
</ul>
</li>
</ul>
<h2>Tune User Security Limit Parameters</h2>
<ul>
<li>Define “soft” &amp; “hard” limits for max open file handles for all users
<ul>
<li>* soft nofile 20000</li>
<li>* hard nofile 20000</li>
</ul>
</li>
</ul>
<ul>
<li>Define “soft” &amp; “hard” limits for max concurrent processes for all users
<ul>
<li>* soft nproc 8192</li>
<li>* hard nproc 8192</li>
</ul>
</li>
</ul>
<h2>What&#8217;s Next?!</h2>
<p>Making good progress? What about the network, firewall, loadbalancer, web server, JVM, application server, application code&#8230;. the list goes on &#8211; save yourself the headache, call the experts!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/01/28/new-system-configuration-its-not-just-the-application-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JVM PermGen memory usage with many CFM templates</title>
		<link>http://www.cfconsultant.com/blog/2010/01/27/jvm-permgen-memory-usage-with-many-cfm-templates/</link>
		<comments>http://www.cfconsultant.com/blog/2010/01/27/jvm-permgen-memory-usage-with-many-cfm-templates/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 16:29:39 +0000</pubDate>
		<dc:creator>David Stockton</dc:creator>
				<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[JRun]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[CFMs]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java.lang.OutOfMemoryError]]></category>
		<category><![CDATA[Registry]]></category>

		<guid isPermaLink="false">http://cfconsultant.com/blog/?p=16</guid>
		<description><![CDATA[Have you noticed requests stop processing and your CPU usage is high?
There are many possible causes of this &#8211; a common one being using &#8220;Registry&#8221; as the CLIENT variable backing store.
Have you seen this combined with &#8220;java.lang.OutOfMemoryError: PermGen space&#8221; errors in your logs?
Again, there are several causes for filling the PermGen space but one common [...]]]></description>
			<content:encoded><![CDATA[<p>Have you noticed requests stop processing and your CPU usage is high?</p>
<p>There are many possible causes of this &#8211; a common one being using &#8220;Registry&#8221; as the CLIENT variable backing store.</p>
<p>Have you seen this combined with &#8220;java.lang.OutOfMemoryError: PermGen space&#8221; errors in your logs?</p>
<p>Again, there are several causes for filling the PermGen space but one common one is too many templates for the allotted space. The PermGen space stores information about classes. Behind the scenes of ColdFusion each CFM translates to a Java class. This means that if you have many templates used by your server, you&#8217;ll have lots of classes and use a lot of PermGen space. Remember this class information gets stored in the PermGen for the life of the server and is never unloaded!</p>
<p>Careful not to get confused with the CF administrator setting &#8220;Maximum number of cached templates&#8221; which are cached in the Heap space.</p>
<p style="text-align: center;"><a href="http://cfconsultant.com/blog/wp-content/uploads/2010/01/cf9_maximum_number_of_cached_templates.gif"><img class="size-medium wp-image-24  aligncenter" title="CF9 Maximum number of cached templates" src="http://cfconsultant.com/blog/wp-content/uploads/2010/01/cf9_maximum_number_of_cached_templates-300x91.gif" alt="CF9 Maximum number of cached templates" width="300" height="91" /></a></p>
<h2>So, how many is too many?</h2>
<p>Well, I looked at an example with a very simple set of CFMs. I took 10,000 CFM templates containing the single line:</p>
<pre>&lt;cfset x = now() /&gt;</pre>
<p>The mean average PermGen increase per template (after execution of course) was 2,677 bytes. This probably doesn&#8217;t sound like a lot but put this into practice on a live server with a real application and it only takes ~1,000-2,000 templates before you&#8217;re out of PermGen space and an unstable server.</p>
<p><strong>Note</strong>: It&#8217;s not just CFMs that are Java classes behind the scenes, your CFC functions count too!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cfconsultant.com/blog/2010/01/27/jvm-permgen-memory-usage-with-many-cfm-templates/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
