Application deployed on Network/Remote Path – Identifying Network Latency – Improve Performance

Many a time, ColdFusion application code is deployed on a network path when your ColdFusion deployments are of large-scale and mandated to use network paths.

After setting up the server for the first time, if there is any performance hit, as the first thing you would want to cross-check few things. One of the things to determine is if there is any network latency.

Though you would have got same network within your organization same as earlier, your OS version also would have changed.

Follow the steps below to see if the performance hit is due to network latency-

When the server is under moderate or full load(with at least 8-10 requests under process), take 2 or 3 thread dumps with 30 seconds interval.

It is not appropriate to take thread dump when the server has negligible load and anlyze that as there may not be any in-process requests.

If you are not sure how to take thread dump, you can simply follow the following blog.

( Taking Thread Dumps From ColdFusion Server Programmatically )

Open the thread dump file:

Under moderate or full load server conditions, if you see more than 5-8% of running ColdFusion threads containing “WinNTFileSystem” in the thread’s stack trace –> It means that there is lot of time being spent in trying to resolve the application file paths.

Following are the sample threads having WinNTFileSystem in its dump.

"ajp-bio-8014-exec-6861" Id=13898 in RUNNABLE
 java.lang.Thread.State: RUNNABLE
 prio=5 blockedtime=28963 blockedcount=6819 waitedtime=421762 waitedcount=115
    at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
    at java.io.File.isFile(File.java:876)

 

"ajp-bio-8014-exec-6861" Id=13898 in RUNNABLE (running in native)
 java.lang.Thread.State: RUNNABLE
 prio=5 blockedtime=28961 blockedcount=6814 waitedtime=421762 waitedcount=115
    at java.io.WinNTFileSystem.canonicalize0(Native Method)
    at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:414)
    at java.io.File.getCanonicalPath(File.java:618)

 

(Note: ColdFusion threads can be identified by the name starting with "ajp-" )

For Example, if there are 50 threads with thread name starting "ajp-bio-" in the thread dump, if you see WinNTFileSystem in more than 2-3 threads, it is the time you start looking at minimizing the network latency.

 

Once you know there is latency, you would want to know how much is the latency when compared to the application existing locally.

Created a very basic network latency test program to validate this.

You can take the jar from here.

And run it from command prompt as follows:

> C:ColdFusion11jrebinjava -jar <Path of NetworkPathsTest.jar> <Network or Local Directory Path >

If the network path (Ex:- \orgserverd$) is accessible only to the ColdFusion service user, open command prompt as that user ( runas /user:<cfserviceaccount domainname>cfserviceusername CMD )

 

Examples:

Path Arguments can be one or more. More Path arguments is a good measure to see the difference clearly.

C:ColdFusion11jrebinjava -jar C:ColdFusion11NetworkPathTest.jar \orgserverd$deploycfm

C:ColdFusion11jrebinjava -jar C:ColdFusion11NetworkPathTest.jar \orgserverd$deploycfm \orgserverd$deploycfmapi

Try the same paths keeping the content same on the local machine and see the time differences.

For the same paths on local and remote, the difference in time should not be exponential.

These tests are to be performed on your ColdFusion server machine.

Once you have validations and found any latencies, it is the time to call for network optimization expertise.

 

 

ColdFusion 11 and dbvarname attribute

First, some background.

dbvarname is an attribute for cfprocparam to specify named parameters while calling a stored procedure. For details refer https://wikidocs.adobe.com/wiki/display/coldfusionen/cfprocparam

Versions prior to ColdFusion5 had support for dbvarname. This was deprecated in ColdFusion MX, brought back in 7.0.1 and deprecated again in 7.0.2. The reason was the lack of proper support from multiple jdbc drivers. Since then, this was a major ask among ColdFusion users.

ColdFusion 11 brought this attribute back from the dead. It was disabled by default with a flag to enable it. ColdFusion 11 update 3 enabled it by default. Databases need a variable prefix for named parameters. (eg:- “:” for Oracle and “@” for SQLServer). If the database is SQLServer, it should be dbvarname = “@param1”. This will break applications which were using this attribute without the prefix because this attribute was being completely ignored in prior versions. So to give some time for customers who don’t want to change their code, in update 4 we introduced a flag to disable dbvarname.

-Dcoldfusion.ignoredbvarname=true jvm flag can be used to disable dbvarname attribute. This flag is only for CF11 and not for later versions.

Having to change lot of code is not pleasant but we believe that is the way forward.

Setting up ColdFusion in distributed envionment

You might want to set up ColdFusion in a distributed environment where ColdFusion is running on one machine and Web server is running on a different machine.

Following are the set of steps that have to be performed to achieve this (less error-prone):

This applies to both ColdFusion 10 and ColdFusion 11.

1) Have ColdFusion server installed in a machine.

2) Next thing is to download and install VC Runtime.

             – The version of VC Runtime that you have to install depends on the version of ColdFusion.

                Say, ColdFusion 11 needs VC Runtime 2012

                 (32-bit VC Runtime for 32-bit Web server and 64-bit VC Runtime for 64-bit Web server.

                  If you are not sure, you can install both)

                 (https://www.microsoft.com/en-in/download/details.aspx?id=30679)

                and ColdFusion 10 needs VC Runtime 2010

 

3) Copy the following contents from the machine where ColdFusion is running to the machine where Web server is running at the same location.

 C:ColdFusion11jre

 C:ColdFusion11runtimelibwsconfig.jar

 C:ColdFusion11runtimeconfserver.xml

C:ColdFusion11configinstances.xml

C:ColdFusion11configcluster.xml

 

4) Open a Command prompt and run wsconfig tool

   C:ColdFusion11>jrebinjava -jar cfusionruntimelibwsconfig.jar

    It will open a configuration window where you have to provide AppServer Host as the ColdFusion Server IP.

    Configure the connector.

Distributed environment is ready for use. Send requests to the Web server's URL with cfm files under web server root and same files under ColdFusion's Web root.

Web server would redirect these to ColdFusion, which is on some other machine.

 

 

Setting up ColdFusion Builder 3 with a remote server

I wish everyone a very happy and prosperous new year. Here comes the first blog post for the year 2015, on ColdFusion Buider 3. A user came across our Mobile Application Development Contest blog and was trying to develop his application using ColdFusion Builder 3, but he wasn’t able to setup a connection between ColdFusion 11 and ColdFusion Builder 3.  He was trying to create a “Remote Server” connection between ColdFusion Builder 3 and ColdFusion 11, installed on separate servers (distributed setup). 

Here are the steps that will help you setup a remote host with ColdFusion Builder:-

1.     Launch ColdFusion Builder 3 and choose your workspace.

2.     Right-click on the “CF Servers” view and select Add Server

3.    Select “New server configuration” and click “OK”. You can choose “Import configurations from RDS server”, in case you have RDS server setup already and want to use existing server information.

CF Server

4.     If you can’t locate the CF Servers, then, follow the screenshot below, to enable it.

CF Server alternate

Refer to Add a remote server and fill in the details for your server.

5.     General Settings

a)     Server Name: ColdFusion server name.

b)     Description: (optional) Description of the server.

c)     Application Server: Select the drop-down list and select CF+ Tomcat Bundle (for CF10/CF11)

d)     Host Name: Name of the remote server host.

e)     Select: Is Remote.

Note: When you enter a Host Name other than localhost or 127.0.0.1, Is Remote is automatically selected.

f)     Webserver Port: Specify the port number of the remote ColdFusion server instance you are configuring. You can refer server.xml for the same at ColdFusion11cfusionruntimeconf.

g)     RDS User Name: (optional) if you are using RDS, specify the RDS user name.

h)      RDS Password: (optional) Specify the RDS password.

General Settings

Click Next to move to the next screen.

6.     Remote Server Settings

a)     User Name: Specify the CF Admin username.

b)     Password: Specify the CF Admin password.

Remote Server Settings

Click Next to move to the next screen.

7.     Install Extensions

Select Install Extensions to install the extensions that are packaged with ColdFusion Builder.

a)     Browse and select the ColdFusion web root location.

b)     Browse and select the ColdFusion web root location on the remote ColdFusion server.

c)     Browse to a location within the web root to install the extensions. The extensions are installed in the Extensions directory within the selected location.

Install Extensions

8.    Click Finish to add the remote ColdFusion server instance. You can right-click on the remote server and access the ColdFusion Administrator of the remote server.

Launch CF Admin

This blog post talks about, the minimal settings required to setup a remote server for CF Builder. You can skip the Install Extensions section as well.

Note: – While configuring the remote server in CF Builder, ensure that, you are able to access/ping the remote ColdFusion server outside builder. You can probably, access the remote CF Admin in the browser, for e.g. http://ip:port/CFIDE/Administrator/index.cfm and ensure connectivity.

 

 

Public Beta for ColdFusion and ColdFusion Builder is now available!

In case you haven’t already noticed,the public beta for the major version of ColdFusion codenamed Splendor and for the next major version of ColdFusion Builder Thunder is now available.

Here is where you can get access to the public beta for both the products on Adobe Labs – http://labs.adobe.com/technologies/coldfusion/

You can quickly go over what’s new in ColdFusion Splendor here. There are also a couple of videos on the video tab that gives you a quick introduction to what’s new in ColdFusion. The link for the documentation home page is at – https://wikidocs.adobe.com/wiki/display/coldfusionen/Home

There are lots of new features and enhancements in Splendor and in Thunder. We look forward to hearing your feedback during the public beta.

 

 

 

 

trycf.com – Excellent learning initiative for ColdFusion

trycf.com is a new learning initiative by Abram Adams. The idea of the portal is to offer tutorials for new or beginner level ColdFusion developers with interactive tutorials using which you can type in CFML code on the browser and see the results live! This is a great way to quickly learn the CFML programming without having to download ColdFusion. 

What’s more, Abram Adams also has a contest running right now where the you, the ColdFusion community, can help take this initiative to the next levels by submitting tutorials that thousands of other developers can use to learn. The process of submitting the turorials for the contest is simple and is outlined here. The top entry in the contest will receive $300 and every valid entry will receive a copy of ColdFusion Builder! Submit your turotials now!

learncfinaweek.com, again a community driven initiative, is already a popular resource for learning the basics of ColdFusion in just a week’s time. I am confident that trycf.com too will turn out to be an excellent learning resource for CF developers.

 

 

ColdFusion case study: ITRX Corp.

One of the world’s leading open-source research websites was
experiencing performance issues because increasing volumes of data were taxing
the system’s available memory. To solve the problem, the Social Science
Research Network (SSRN) called on ITX Corp., an IT solutions provider. ITX
rebuilt the site using Adobe ColdFusion,
which helped eliminate memory problems, cut development times through the reuse
of modularized code, and streamline SSRN’s web technology infrastructure.

 

“Not only did the upgrade to 64-bit Adobe Cold Fusion help stop
server crashes, it also helped reduce the number of servers SSRN needs to run
its site,” says Fernando D’Agostino, lead architect at ITX. “Previously, SSRN
had 14 servers. Now it has 8, which reduces costs associated with server
purchases, maintenance, and support.”  http://adobe.ly/19XDRHf

Thank you for making CFSummit 2013 a success!

I thank each of the 503 attendees for the overwhelming response and great feedback for the first ever ColdFusion conference from Adobe. The positive feedback post the conference on social media – Twitter, Facebook and the blogs has been really encouraging. We have also made note of some of the improvements that have been suggested and will work on those for a better CFSummit next year.

The conference would not have been successful without the efforts from all the speakers. We had more than 1500 session surveys from the audience and the average session rating was a high 4.3/5 across all sessions. Kudos to each of our speakers!

A great line up of speakers and sessions was possible only because of the Content Committee. Thanks to Tim Cunningham, Dan Wilson and Jason Dean for helping us in the Content committee.

And finally, thanks to all the Adobe staff that ensured the event was successful.

CFSummit also gave Adobe an opportunity to showcase both the current and future of the product and receive valuable feedback from the community. We have responded to the feedback about lack of ColdFusion developers with two initiatives that can help increase the number of ColdFusion developers. One is the introduction of new curriculum to promote ColdFusion in education and the other is re-energizing ColdFusion User Groups.

We now have a new “Introduction to Web Application Development” curriculum available to be taught across various colleges and universities. Three colleges have already adopted the curriculum and many more will adopt during the upcoming Spring semester. Anyone from the ColdFusion community, who helps us in getting leads or contacts to colleges/universities eventually leading to a successful adoption of the curriculum at one of those colleges/universities, will win an iPad from Adobe for their contribution! Do reach out to me via email if you are keen on helping us with the contacts. Email: rakshith@adobe.com.

The number of active ColdFusion User Groups has also increased from 22 earlier this year to more than 70 now. We will continue to make progress here. If you have any issues related to User Groups, including starting a new ColdFusion User Group, reach out to Kishore Balakrishnan, Product Marketing Manager for ColdFusion. Email: kishore@adobe.com.

These initiatives take time before it begins to make a significant impact. We at Adobe are aware of this and are willing to be patient to see these initiatives contributing to the future of ColdFusion. On a related note, it was heartening to see quite a lot of new CF developers at the conference.

We are very pleased with the outcome of CFSummit2013 and are looking forward to seeing you all again at CFSummit 2014.

Until then, continue to rock with ColdFusion!

CFSummit Mobile app for Android and iOS

I am pleased to let you know that there is a mobile app available for iOS and Android for the Adobe ColdFusion Summit happening in Vegas.

Here is the link for the app on Google Play. And here’s the link for the app on iOS.

The best part about this is app is that the entire app is built using the new Mobile features coming up in ColdFusion Splendor and ColdFusion Builder Thunder. The code for the app will be shared after the CFSummit.

You can view the entire schedule of the conference, create your own schedule, submit session and conference surveys, follow Twitter feed and even receive conference notifications.

Go ahead and play with the app before you arrive at the CFSummit next week.

See you all in Vegas at the largest ColdFusion conference in recent times.

 

 

 

ColdFusion: News and Updates from Adobe

Over the last few weeks there have been quite a few passionate discussions happening on ColdFusion, including the blog post from Cutter recently. 

I thank the ColdFusion community for all the feedback and I want to assure you that Adobe is very much a part of the story on the revival of ColdFusion. There is no denying that the road ahead is challenging, but all of us here at Adobe strongly believe that there is enough potential in ColdFusion and want to see the platform as successful as ever. Rather than viewing Adobe and community as two separate entities, we are keen to work with the community with a common goal of reviving ColdFusion. And in that context the feedback that we have been receiving is extremely valuable. 

While not every single feedback can be acted upon, I want to make the point that ‘WE HEAR YOU’ and we are taking actions and will continue to take them for the better of ColdFusion. I want to use this opportunity to discuss with you the initiatives, updates about the product and its ecosystem as well as product news from Adobe.

New Customers

We do hear news about an organization moving away from ColdFusion. How about we start by talking about how many new organizations are adopting ColdFusion? Nearly 2000 new organizations have chosen ColdFusion as their web application platform over the last one year. And this not a random number being thrown at you. There is data in our system to back this claim.

User Group Engagement

Since the beginning of this year, we have been engaging with ColdFusion User Groups across the world providing them support to keep the User Groups active. While we only had 22 active User Groups at the beginning of this year, the engagement levels have gone up. We now have 74 active ColdFusion User Groups that meet at least once a quarter across North America, Europe and the rest of the world.

CFSummit

CFSummit, as most of you know, is the first ever dedicated ColdFusion conference from Adobe. Thanks to great efforts from teams within Adobe and the ColdFusion community, CFSummit will be the largest ColdFusion conference with 500 + expected attendees. We have more than 20 speakers and 28 engaging sessions spread across two action packed days in Vegas. ColdFusion is going to rock Vegas, baby! Be there! Don’t forget to say hi to the Product Marketing Manager of ColdFusion, Kishore Balakrishnan, who is instrumental in running this large ColdFusion conference. 

ColdFusion Community Portal

The ColdFusion Community Portal was launched by Adobe this year : http://coldfusion.adobe.com

The community portal is one centralized access point for information on the latest in ColdFusion. It also provides our partners and consultants to showcase their capabilities and latest innovations with the platform. It is also a User Group hub where ColdFusion developers can find information related to various User Groups and their events.

ColdFusion case studies

Organizations, across the board – from small, medium to large, continue to derive value from ColdFusion. This is evident in the case studies listed below where organizations have reported flat learning curve, product launches now taking under two hours which used to take a day, ColdFusion allowing 40% more projects on a single server, less lines of code (100k vs 4.5 million) and more. Here are the links for the recent case studies that talk about each of these in detail,

Prospective Medical Data International Inc. 

ten24 Digital Solutions

SimulTV

Invision

 

Education Initiative

We at Adobe already have designed a brand new curriculum titled 'Introduction to Web Development', focusing on the latest in Client-side Development, Mobile Application Development and Server Side development through ColdFusion. The idea of the course is to provide a holistic view to web application development rather than focusing on individual aspects of web development. I can even challenge that there is no other web application development curriculum available for education that provides such a complete learning of all concepts related to modern web application development. All of this is made available free of cost along with the licenses required. 

We are actively looking to partner with colleges. We have three colleges/universities that are using the curriculum in the fall semester. We will have many more in the upcoming spring semester. We are really looking forward for involvement from the community to promote the curriculum in your local colleges. The support from the community so far has not been encouraging although there a few who have made all efforts to spread the word to get adoption at colleges. We clearly need more support! We are open to not just colleges/universities, but also to anyone who is willing to teach web application development even at a local community center. There is enough instructor guidance available through videos for the entire forty hours of curriculum.

We are even willing to work with a community leader who can take the curriculum to an online platform for a much wider reach. Do reach to us if you have any ideas here!

Product Improvements

Although we make improvements with every release, we understand that there is more to be done in the product to overhaul the platform. ColdFusion has lost aspects of productivity benefits in web application development to some of the other emerging platforms over the years. 

There are quite a few language improvements such as full script support and member functions that are already a part of the upcoming version – Splendor. The goal of Dazzle, the version after Splendor, is to transform ColdFusion into a high performing nimble platform that is truly modular, powered with revamped language constructs and an enterprise class package manager to encourage an ecosystem around the platform. I believe these, along with the mobile application development focus in Splendor and the continuous innovation in future releases, have the potential to bring ColdFusion back on par as a modern web application development platform.  

We will also actively deprecate/remove features that no longer are relevant although keeping in mind not to affect existing ColdFusion applications. You will notice action here starting right from ColdFusion Splendor.

Support Improvements

Earlier this year, the ColdFusion support launched a new alias through which the community can directly reach support for free and instant support regarding all installation issues via the cf.install@adobe.com email alias. The support team effectively handle around ten email queries on a daily basis in  cf.install@adobe.com related to updates, installation and applying hotfixes.

Here are a few Customer testimonials for support team: 

"I contacted cf.install@adobe.com and they helped me very quickly."

"I wanted to thank you for the dedication and patience which you have shown our team here. You are a tremendous asset to your company and we truly appreciate your efforts on this case."

"The person who I was interacting with in the support team is magnificent and very very knowledgeable. He resolved the easy ones quickly and patiently stuck with me on the tough ones and got me through"

Support team is also active on Adobe ColdFusion forums providing close to real time resolution. This engagement on the forums is beneficial for ColdFusion developers who face issues and the forum interaction can lead to the solution being used my many more. Two of the support engineers are also one of the recent top contributors on the forum.

Even IDC in its whitepaper on ColdFusion believes that “ColdFusion's role as an integration hub of multiple paradigms of technologies and multiple developer ecosystems will continue as all the features that have been built into it are further integrated with new technology currently in planning.”

While all of us realize that all is not rosy, we need to work together to elevate ColdFusion from its current state. There is enough to be done by both Adobe and the community at large. Now that we have a fair feedback and idea on what is required, it is time to take the next steps. Here’s to many more years of ColdFusion! We are open to feedback. Reach out to us with any of the ideas that you may have on how we can work together for a better ColdFusion.