Adobe Solution Partner

August 5, 2010

Integrating ColdFusion with FogBugz results in cfhttp conx failure

Filed under: ColdFusion, General Development, JVM & Java — Nat Papovich @ 3:13 pm

The development team at Webapper has been using FogBugz for a couple years now and we like it well enough not to bother switching to anything else. One thing I found lacking is a “customer portal” – a way for our clients to review the status of open tickets we’re tracking for their projects. Our old system, OnTime, had this feature and it seems pretty basic. FogBugz does have a weak “anonymous user” feature but it doesn’t work how we need it to work. So we built a custom ColdFusion front-end using the FogBugz API. It has its own user table and user-project table, and the rest is just calls to FogBugz for tickets in a project, details about a ticket, etc.

But I encountered an issue right away, using cfhttp to call the FogBugz API. Here is the code I tried:

<cfhttp method="get" url="https://webapper.fogbugz.com/api.asp"></cfhttp>
<cfdump var="#cfhttp.FileContent#">

I kept getting “Connection Failure”. If you’re familiar with the FogBugz API (or if not but you have a good imagination and can take a guess what that URL might do) you might notice I’m not even doing an “action”. You can even try that URL in a browser and see that it displays a message about not being logged in, which is a response from the API. I wasn’t even getting that far. It’s like there was some invisible wall in between my cfhttp call and the API.

Because calls to the FogBugz API need to run over SSL, I thought I had to add the cert to the cacerts store in my JRE to make the SSL bit work. That took a while to do since I’m on a mac and the cacerts never looked right. Eventually though I got a cert added, but the cfhttp call still wouldn’t work. I never did figure out what the root cause was, but I did work around it.

I wrote some java code to do the job:

objUrl = createobject("java","java.net.URL").init("#local.baseURL#&amp;#local.queryString#");
conn = objUrl.openConnection();
...followed by some InputStreamReader and BufferedReader to get the output.

And now it works. So I know my cacerts thing is right and it’s a deficiency in cfhttp itself. What, I can’t be sure, but I don’t care. So if you’re struggling with ColdFusion and FogBugz integration using cfhttp, try this instead. And if you have gotten cfhttp to work with the FogBugz API, please share your code!

July 29, 2010

(Bollox to) ColdFusion is Slow

Filed under: ColdFusion, Databases, JVM & Java, Performance, SeeFusion — Patrick Quinn @ 12:50 pm

We’ve been hearing the “ColdFusion is slow” nonsense for as long as the platform as been around. (Quick history tidbit: We still have support emails from back when Jeremy Allaire was sending them himself!) In our opinion, whenever someone repeats this tripe, that person is instantly branded a software novice, and, probably, one with an anti-ColdFusion axe to grind, too. Since we’ve been ColdFusion performance engineering specialists going all the way back to our days at Allaire, we’ve always known that ColdFusion (which is to say Java) is not inherently slow. Does ColdFusion provide a lot more rope with which developers and system/network administrators can hang themselves (and their ColdFusion systems)? Absolutely. And thus, ColdFusion’s greatest strength has also always been its greatest weakness–its out-of-the-box capabilities and low learning curve are unparalleled. As with life in general, however, with such power always comes great responsibility, too. ColdFusion is just software, and if you’re not following the best practices for developing fast, stable software, then you can program and/or configure any software platform into the ground, performance-wise. That’s basically what we do in our performance engineering practice–we apply (usually retroactively) all of the best practices necessary to create the fastest possible ColdFusion systems.

But, don’t just take my word for it. Let me dazzle you with some real-world numbers. One of the systems that we tuned recently was peaking at 200-300 requests per second. Here’s a screenshot, so you can see for yourself:

ColdFusion Rocks!

Mind you, this was a single 32-bit Windows machine, so it wasn’t even a leading-edge hosting platform. (All of the ColdFusion hosting environments that we design and implement these days are all-64-bit, which makes an enormous difference in terms of CPU utilization, RAM, etc.) All of this performance was coming out of a humble little 1.4GB memory space. When you get things right in terms of properly tuning a ColdFusion system–garbage collection, query activity, etc., etc.–then ColdFusion will stack up against any other Web application platform, or even lead the pack, when it comes to speed.

So, let the word go forth today–the notion that ColdFusion is somehow inherently slow is bollox. For those of you not familiar with British English, the American English translation is: Bullshit! (The title of the blog post is in honor of our British Co-Founder, Mike Brunt, who was the lead performance engineer on this engagement.) Happy tuning to you all, and please give us a ring if you’d like our help making your ColdFusion systems as fast and stable as possible.

July 27, 2010

ColdFusion Heros

Filed under: ColdFusion, Fusebox, General Development, JVM & Java, Macintosh, Performance, SeeFusion — Patrick Quinn @ 5:47 pm

As leading ColdFusion performance engineers and application development specialists, we’re pretty good at what we do. Still, it’s comparatively unglamorous work that we do, focused as it is on recondite topics like software frameworks and Java memory utilization patterns. We’ve got thousands of happy customers of our ColdFusion support and development services, and our SeeFusion product. But, it’s not exactly the Cult of Mac around here in terms of effusive enthusiasm on the part of our customers. I suppose you can only get so emotional about applying an especially effective design pattern, or optimizing the throughput of your server.

So, I felt I had to share a recent plug from a customer of our ColdFusion Support Plans. This customer went out of his way to send a postcard (below). Touching, and appreciated beyond words. And, it just goes to show you–ColdFusion best practices can be sexy! I think I’ll go shopping for a black mock turtleneck now…

All kidding aside, kudos to our ColdFusion Support Engineers, and please give us a shout if we can help you maximize your investment in the ColdFusion platform.

ColdFusion Support Testimonial

April 6, 2010

ColdFusion Support Plans

Filed under: Business of Software, ColdFusion, Miscellaneous, Performance — Patrick Quinn @ 2:12 pm

For the past decade, our team here at Webapper has been delivering specialized software services focused on ColdFusion performance and stability. Up until now, we had only offered that expertise in the form of “retail” consulting services. This model works roughly like conventional medicine–wait until you’re sick, then call a doctor. Sure, docs can do some pretty impressive things these days, and similarly our engineers have tuned and stabilized more ColdFusion systems than anyone on the globe over the past decade. But, it sure would be nice not to get sick in the first place! So, in December, we launched formal ColdFusion support plans, designed to provide proactive performance engineering for ColdFusion systems. Here’s how we put the plans together:

  • First, work for 10 years to become the very best at solving ColdFusion performance and stability problems.
  • Along the way, create a suite of services that’s complete–addressing any performance and stability need for a ColdFusion system (application-layer, server-level, data tier, network-layer, etc.).
  • Next, find out what ColdFusion customers really want in terms of support. In 2009, we worked with key ColdFusion hosting partners, and also conducted a survey of our thousands of ColdFusion customers, in order to find out what folks wanted and needed.
  • Refine, rinse, repeat. We put all of this together–our knowledge of the limited effectiveness of the reactive approach to performance and stability problems, the feedback we’d gotten from partners and customers about the “typical” support plan experience, and about the kind of support deemed both useful and flexible–and then we worked with some former senior management for “official” ColdFusion support services from Allaire/Macromedia/Adobe to put together something new, and better.
  • Launch! In December, we launched our formal support plans for ColdFusion.

Here’s a brochure site we put up describing the plans:

There’s a lot of information there, but, please don’t hesitate to contact us to discuss any and all details. We’ve tried to clarify/simplify information about the plans as much as possible, but, nothing beats hearing it live from a ColdFusion performance engineer with 10 years of experience in the trenches of ColdFusion engineering.

November 25, 2009

ColdFusion Survey

Filed under: ColdFusion — Patrick Quinn @ 7:10 pm

Here at Webapper, we’re working on a little somethin’ somethin’ that we think will be a big help to the ColdFusion community. And, though we’re as egomaniacal as the next bunch of engineers, we’d nonetheless never try something new without asking for feedback. So, we’re conducting a survey of ColdFusion users. It has to do with ColdFusion support–getting it, using it, etc. Since one of our thousands of happy customers is a seller of custom, large-sized women’s bras (true story!), we thought we’d come up with some kind of funny spin about “support,” but, while we’re working on that, we’d like to welcome you to complete our survey. As a thank-you, we’re giving away a free copy of SeeFusion Enterprise to the first 100 respondents.

Update: Since the response has been so overwhelming, we’ve decided to up the giveaway limit to the first 200 respondents!

Thanks so much in advance, and a Happy Thanksgiving to all!

November 13, 2009

Connecting to SQL Server 2008 (Express) from OS X

Filed under: ColdFusion, Databases, Macintosh — Perry Woodin @ 1:26 pm

This is for anyone having trouble connecting to SQL Server on Parallels from ColdFusion on Mac OS X.

Each time I’ve installed a new version of SQL server — be it 2005 or 2008 — it took me a bit a random clicking to get a ColdFusion datasource connected to SQL Server.

Here are some tips.

  1. Make sure the service is running. Well duh… but this has tripped me up before, so just check and save yourself the headache.
  2. Make sure that TCP/IP is enabled.  To do this, open Start => All Programs => Microsoft SQL Server 2008 => Configuration Tools => SQL Server Configuration Manager. In the left column, expand SQL Server Network Configuration. Select your SQL Server instance (note the instance name e.g. SQLEXPRESS) and then double-click TCP/IP in the right column to open the TCP/IP Properties. Under the Protocol tab, make sure Enabled is Yes.
    TCP/IP Properties
  3. While you’ve go the TCP/IP Properties window open, click the IP Addresses tab. From this tab, you can see what IP address SQL server is running on. Equally important, you will see the Port Number. The default port number is 1433, but I’ve got three versions of SQL Server running and each one uses a different port number.
    IP Addresses
  4. Login to your ColdFusion administrator and create a new SQL Server Datasource. The Server will be the IP Address (e.g. 10.0.1.6) followed by a colon (:), followed by the instance name (e.g. SQLEXPRESS). You get the port number from the IP Properties window in step 3 above (e.g. 1094).
    ColdFusion Datasource

That’s it. If you’ve got Windows Firewall running, make sure you can accept traffic over the port being used by SQL Server.

October 19, 2009

1-Day ColdFusion TNT Audit

One of the advantages of our decades of combined experience is speed—we identify, prioritize and fix the causes of performance and stability problems as quickly and effectively as humanly possible. If you’ve got ColdFusion performance and/or stability problems, and you haven’t yet hired us for consulting, then I’d like to invite you to try our 1-Day ColdFusion TNT Audit. This is an abbreviated version of our more in-depth TNT engagement.

ColdFusion TNT Engagement Report

ColdFusion TNT

The 1-Day ColdFusion TNT Audit is the fastest possible way to begin to identify, prioritze and fix the causes of ColdFusion performance and stability problems. Here’s what we deliver in just one day of effort:

  • A review of your SeeFusion configuration, in particular query monitoring and database logging settings.
  • A review of your JVM configuration, in particular memory utilization settings.
  • A review of your ColdFusion log files, stack traces, and any other diagnostic information you’ve gathered.
  • A review of your ColdFusion Administrator settings.
  • An analysis of your SeeFusion metrics.
  • A written report detailing and prioritizing your system’s bottlenecks, complete with extensive data in tables and charts sorted by a variety of methods.
ColdFusion TNT Engagement Report

ColdFusion TNT

If your ColdFusion systems are experiencing performance or stability problems, contact us today.

Important Note: The 1-Day TNT Audit is not ideal for customers with specific and/or severe performance/stability problems. For those situations, our comprehensive TNT engagement is the best solution. The TNT Audit is intended as a way to get to know us while considering additional services, and to obtain a very useful “snapshot” of your system. It is not the intensive investigative/problem-solving engagement that our standard TNT Services represent.

September 10, 2009

MS SQL Maintenance Plans

Filed under: Databases — Perry Woodin @ 3:51 pm

Maintenance Plans in MS SQL 2005 are a powerful and easy way to manage and backup your databases. In this article, I’m going to walk through 4 basic tasks that we run weekly on a client’s database. You’ll learn how to reorganize indexes, create a full backup (*.bak), shrink your database (shrinks both data and log files), and cleanup the backup directory.

Creating a Maintenance Plan

In SQL Server Management Studio, expand the Management folder, right-click Maintenance Plans and select New Maintenance Plan…

Give the Maintenance Plan a name and click OK. The new empty Maintenance Plan will open in Design Mode. All of the available tasks are in the left hand column Toolbox under Maintenance Plan Tasks.

To add any task to the maintenance plan, simply drag the task from the Toolbox into the design frame. Once the task is in the design frame, double-click to edit.

Reorganize Index Task

The reorganize index task updates table and view indexes so the search order is more efficient. The task dialogue is pretty simple. Use the Database(s) drop down to select one or more databases. Then use the Object drop down to select whether Tables, Views, or Both should have their indexes reorganized. For this example, I’m going to reorganize both Tables and Views. When done, click OK.

Back Up Database Task

The Back Up Database Task creates a Full, Differential, or Transaction Log backup. In this example, I’m going to create a Full backup which will create a *.bak file.  This task dialogue is also pretty simple. Set the Backup type to Full and then select the Database(s) to backup. Jump down to the bottom third of the dialogue and select the Create a backup file for every database radio button. Then browse to the folder where the backup files are to be saved. When done, click OK.

Join the Reorganize Index Task to the Backup Database Task by dragging the green arrow between the two. Once the two tasks are joined, right-click the arrow and select Completion.

Shrink Database Task

The Shrink Database Task should come after the back up task because the shrink cannot be executed on a database until a Full backup has been created. In the task dialogue, select the Database(s) and just accept the defaults. When done, click OK. If you’ve noticed your log files getting out of hand, the shrink task will bring the file size down. In a recent test, my active log file went from over 2GB to just over 200MB.

Join the Back Up Database Task to the Shrink Database Task, and set the type to Completion.

Maintenance Cleanup Task

As the last task in the Maintenance Plan, I’m going to cleanup the backup directory by removing any *.bak files that are older than 2 weeks. If you’re doing this type of maintenance, you’ll want to make sure you’ve got some sort of server backup that keeps a longer history of your *.bak files off-server.

Open the task dialogue and skip down to the Search folder and delete files based on extension.  Navigate to the backup folder that was set in the Back Up Database Task. Then set the file extension to bak. Note the extension is simply bak. You don’t need to include a . (dot). Skip to the bottom of the dialogue and set the age of the deleted files to 2 weeks. When done, click OK.

Join the Shrink Database Task to the Maintenance Cleanup Task, and set the type to Success.

Execute the Maintenance Plan

Save the maintenance plan. From the Object Explorer, right click the new plan and select Execute to test it.  If everything runs without error, you can set the plan to run on a schedule.

On the design mode screen in the Subplan grid, click on the calendar icon and set the schedule for executing the plan. When done, click OK.

That’s it. The plan will now run as a scheduled task. Not only does the plan backup the database, but it’s also reorganizing the indexes, shrinking the database and cleaning up  the backup directory. Best of all, once it’s setup, the plan executes without your intervention and at a time that is best for your system.

August 21, 2009

ColdFusion 9 Solr startup scripts for OS X

Filed under: ColdFusion — Shannon Hicks @ 12:07 pm

The ColdFusion 9 team was kind enough to share the startup scripts for the ColdFusion install of Solr for OS X.

Here’s how to use these scripts:

1. Copy the files to solr installation directory. i.e /Applications/ColdFusion9/solr or /ColdFusion9/solr. Change the scripts to have execute permission.
2. Open cf-init-solr.sh and cf-solr-startup and be sure that CF_DIR is set to your coldfusion9 install directory.

From there, run:

sudo ./cf-init-solr install
to install the scripts.

sudo ./cf-init-solr uninstall
to remove the scripts.

All done!

Download the scripts now.

August 5, 2009

Webapper at RIA Unleashed : Boston

Filed under: ColdFusion, Conferences, Flex & Flash — Shannon Hicks @ 11:52 am

We are proud to announce that Webapper is sponsoring RIA Unleashed in Boston this year. Brian Rinaldi has been putting together some great Flex camps in years past, and we jumped at the chance to sponsor this expanded event. This year, it’s an all-day conference with three tracks: Flex/Air, ColdFusion, and Related Technologies. Steven Erat and I will be speaking, along with many other great Adobe employees and community experts.

There are still a few $30 tickets left, so register now before the prices go up!

Older Posts »

Server Down?

Maximize Web application uptime by drawing upon Webapper's years of experience tuning and stabilizing many of the world's largest ColdFusion Web applications. Contact us today!