December 2000

Performance Anxiety
by Brian Dunning

digg this article | del.icio.us this article

A hack of the machete sent a thick bundle of vine to the grassy floor. The Consultant breathed hard, sweating as he stared through the hole in the jungle. Mosquitoes wandered freely on his bare shoulders. He shuddered at what he saw.

Shining wet blood coated the stone idol before him. The gaping skeleton, its flesh stripped away, sprawled across the face of the rock, pinned by iron spikes through its mangled limbs. A laptop case was chained to its wrist, and the smashed Windows notebook lay on the ground beside Microsoft Access and 4D manuals.

Obviously he was not the first to pass this way. Others had tried and failed. A few steps further he came across a newly cut head stuck atop a spear thrust into the ground, jammed through a Microsoft Internet Information Server box. "Cusick," he recognized. "Trying to pass off those damned Active Server Pages again."

"A friend of yours?" asked the Consultant's porter.

"A competitor. He was good. He was very, very good."

Dead faces rose from the jungle all around him. The painted warriors moved slowly and calmly without fear or threat, closing in on the Consultant. The porter was carefully pulled to the ground and beaten to death with measured blows. The Consultant shouted as he was lifted, turned, drugged, and carried through the dizzy dark passages of bamboo.

"Madness," said the Client, squeezing water from a rag and dipping his face in a coconut bowl. "Madness, that after three Consultants, our site is still not performing."

"Have you checked your server logs?"

The Client rose and stood looking down at the Consultant's curled form, quivering, feverish. Light and darkness wrought their themes across his chiseled face and he frowned.

The Consultant coughed. "I can start if you show me your server."

The Client made no answer and stood with black eyes. Then he lifted a machete and pointed it across the room at a recent Dell Pentium III.

The Consultant crawled over, his grubby rags trailing on the stone floor. With a dirty hand he dragged the mouse and brought FileMaker Pro to the foreground. The screen was dancing madly from layout to layout and from record to record, periodically pausing only to let a lazy progress bar grind agonizingly across the screen.

The Consultant's experienced instincts took over and his mind instantly analyzed what he saw. "You're running your entire site on this server, "he began, like an automaton. "Web Companion is turned on, it's acting as your web server, and as your database. All user requests are coming through this one machine." And then his brow wrinkled. He saw a problem. And then another.

"Your site has scripts in it," said the Consultant. "That's the first thing to go."

"Why," said the Client. It was a command, not a question.

"When a script runs, even if it's just for a moment, it blocks Web Companion from handling any other server requests at all. This can seriously impact site performance under heavy load. Forget the scripts, and do all your data manipulation with the CDML tags."

"If I shouldn't use scripts, then why are the CDML tags for scripts in there?"

"Do you want my help, or not?"

The Client said nothing; only bowed his head. The machete drooped. He took a deep breath, filled his lungs and threw his head back. Drizzle from the bamboo roof sprinkled on his shaven face and head. And then he spoke:

"I've done...questionable things."

"Yes you have," said the Consultant. He pointed to a layout. "Look at all the fields on this layout that Web Companion is accessing. Some of them are calculation fields."

"That's the layout we use for data entry," said the Client.

"Your web interface only requires access to a very few of these fields. Yet, when additional fields appear on the same layout that Web Companion accesses, they create tremendous additional overhead for Web Companion to process needlessly. Especially these calculation fields. Even though your site does not require them, simply placing them on the same layout requires FileMaker to update each of the calculations and pass that along to Web Companion."

The Consultant plugged in his laptop, opened the file as a multi-user client, and duplicated the layout. He deleted all the fields not required by Web Companion, particularly the calculation fields. The site sped up immediately.

"There now," said the Consultant. "A simple fix, with dramatic noticeable results. Now you can use this duplicate layout for your data entry, and leave this one alone."

"Sometimes," said the Client, trying to restrain his pleasure, "when a web user finds a large set of records, FileMaker takes too long to sort."

"Which causes other web users to have to sit and wait, and twiddle their thumbs," said the Consultant. "I feel your pain. Here's the solution."

He dug in his PowerBook case and produced FileMaker Developer 5. "This product includes a nifty tool called Web Server Connector. Do you have any other computers available?"

The Client pointed the machete across the dark hut to a neat stack of newly boxed iMacs and Dells. The Consultant unboxed four of them, set them up, and installed FileMaker on three of them. He installed FileMaker Pro Server on a fourth.

"I'm going to take your site down for five minutes."

The Client said nothing, but his eyes widened perceptibly. He tightened his grip on the machete, an action not lost on the Consultant.

"And when I bring it back up," said the Consultant, "you'll have far more capacity for concurrent users. And they won't slow each other down when they do large sorts and stuff."

The Consultant stopped FileMaker Pro on the server computer. He removed the application. Then he turned on Microsoft Internet Information Server services, installed the Web Server Connector, and opened a browser. He accessed the settings and defined the three new FileMaker computers. Then he copied the files across the network to the fourth computer running FileMaker Server, started it up, open the files as clients on the three FileMaker machines, then started IIS.

Instantly, the screens on the three FileMaker machines started popping as web users hit them.

"What have you done?" whispered the Client harshly, as if the Consultant had just committed global genocide.

"All of your web users are now hitting Microsoft IIS instead of Web Companion," explained the Consultant. "It's a much more robust, multi-threaded web server. The Web Server Connector is funneling all the FileMaker requests to the three FileMaker machines, in a round-robin load distributing kind of way." One of the machines paused for a few seconds as FileMaker sorted a large group of records, but the others continued popping right along.

The Client smiled.

"Well done," he said slowly. Then he raised the machete again, and some of his painted warriors appeared at the Consultant's side. "Now be our guest at dinner."

And the Client howled with an otherworldly laughter, which echoed through the stone temples and flushed thousands of bats from the trees.