1. What is
the maximum number of connections allowed by FlashCONNECT?
When using FlashCONNECT,
there are several points at which user limits can be reached.
- The
maximum number of D3 licenses purchased.
- The
maximum number of licenses supported on the D3
platform being used.
- The
throughput of the w3Agent running on Web server.
- The
Web server CGI throughput.
Issues
3 and 4 can be controlled by hardware/software, i.e. faster
O/S, Web server, faster hardware. There is a maximum switching
rate for the w3Agent, however, for small fast applications;
we've pumped hundreds of connections per minute through the
w3Agent.
I suspect that in most cases the application and Web server
and host O/S will choke before the w3Agent chokes.
2. How do
I determine the number of licenses to use?
The answer to
this questions depends mostly upon how your FlashCONNECT application
is designed and implemented.
For purposes
of this discussion the following terms need to be defined:
- Face
time: The amount of time the user looks at a Web page before
submitting the response. Included as a part of Face time
is the time it takes to send and receive the Web page.
- Processing
time: The amount of time taken to generate a FlashCONNECT
Web page. This time starts when FCService/w3Agent receives
the FlashCONNECT request, and ends when FCService/w3Agent
sends the reply back to the Web server.
- Concurrent
users: The desired number of concurrent users.
- Fudge
factor: An arbitrary amount by which to increase the number
of licenses for unexpected peak use, growth, and errors
in the estimate of Face and Processing time. Somewhere between
10% and 25% is a minimal value for the fudge factor.
- Shared
users: The number of users which can share one license.
- Licenses:
The number of D3 licenses required to support the specified
level of concurrent users. We recommend rounding up to the
next number of licenses.
For applications
which exclusively use persistent connections, the number of
shared users is 1. For applications which use some persistent
connections, count the total time from when the persistent
connection starts until it ends as processing time, regardless
of the number of Web pages involved in the persistent connection.
Shared
users = (Face Time + Processing Time) / Processing Time Licenses
= Concurrent users/Shared Users * Fudge factor
Examples:
An
average Web page takes 1 second to generate. Before replying,
the user looks at the Web page for 9 seconds. Support for
100 concurrent users is needed; a 15% fudge factor is desired.
Face time, 9 seconds; Processing time, 1 second; Concurrent
users, 100 users/second; Fudge factor 15%; Shared users =
(1+9)/1 = 10 Licenses = 100/10*1.15 = 11.5 = 12 rounded up.
An
average Web page takes 2 seconds to generate. Before replying,
the user looks at the Web page for 15 seconds. Support for
200 concurrent users is needed; a 10% fudge factor is desired.
Face time, 15 seconds; Processing time, 2 seconds; Concurrent
users, 200 users/second; Fudge factor 10%; Shared users =
(2+15)/2 = 8.5 Licenses = 200/8.5*1.1 = 25.8 = 26 rounded
up.
These equations
are a suggestion from Raining Data and may not be applicable
to your site. Raining Data assumes no responsibility for calculating
the number of licenses needed for your site.
3. How do
you determine the meaning of a connect or socket error message?
If logging
is enabled in the w3Agent.conf file, an error message may
be written to the log file. This FAQ describes how to backtrack
the error code to the appropriate man page on Linux (D3
ProPlus) systems.
- Record
the error message and error message number. The error message
number is located between the < and > characters in
the error message.
- In
the /usr/include/asm/errno.h file, find the error message
number.
- Look
at the defines to the left of the error message number.
- If
the error message is for a connect, look at the connect
man page.
If the error message is for a socket, look at the socket
man page.
- Read
the documentation about the error.
7.
After I install FlashCONNECT the D3 programs don't start.
This problem has several causes:
Cause
1: Failure to update the www account md after doing the account-restore
and before logging to the www account for the first time.
Symptom
1: The w3Logs,FlashCONNECT
file does not exist after starting FlashCONNECT for the
first time and "create-file w3Logs,FlashCONNECT 13" from
the www account doesn't work.
Solution
1: Reinstall the www
account, remembering to run "update-md www (n" after the
restore and before the first time logging into the account.
Cause
2: FlashCONNECT is not activated.
Symptom
2: www-status shows an
appropriate message. If the entire message isn't available,
just use the instruction "ct w3ines" from the www account
to see the entire message.
Solution
2: Purchase a copy of
FlashCONNECT and activate the product, or obtain a temporary
demonstration FlashCONNECT activation.
Cause
3: Insufficient D3 licenses.
Symptom
3: www-status shows an
appropriate message. If the entire message isn't available,
just use the instruction "ct w3ines" from the www account
to see the entire message.
Solution
3: Purchase additional
D3 licenses or obtain a temporary increase while you evaluate
FlashCONNECT.
8.
How can I use FlashCONNECT from within JavaScript to perform
pre and post field processing?
The following line of JavaScript shows running a FlashCONNECT
application and optioning the results from JavaScript. A
line such as this can be embedded within JavaScript methods
and used as needed within a Web page.
top.content.body.document.location = "http://"+ hostname
+
"/cgi-bin/fccgi.exe?w3exec=<AppName>&w3serverpool=<PoolName>
&formname=<formname> & <ParameterName>=<value>"
9.
How can you start FlashCONNECT as an arbitrary user?
The following program starts a child program as phantom running
in a specified account as a specified user, then runs a specified
command.
Usage:
parent-program data
Parent
program:
tclread
indata
*
Extract the first word which is the name
* of this program
indata
= trim(indata)
word2start = index(indata, " ", 1) + 1
*
Data follows this program name
indata = indata[word2start, 999999999]
*
set up the user and account to use
user ="DM"
userpass=""
acct ="WWW"
acctpass=""
cmd = "test ":indata
line = ""
*
set up the phantom start command
* pass in the user and account name and password
data
user
data userpass
data acct
data acctpass
data cmd
data line
data ""
execute "z"
Program
called test which exists in the target
account and is run there
the first word is this program's name
tclread
indata
indata = trim(indata)
*
data follows the program name
word2Start = index(indata, " ", 1) + 1
indata = indata[word2Start, 999999999999999]
cmd
= "msg jack run from ":@account:" as ":@user:" data
":indata
execute cmd
10:
My FlashCONNECT connection dies after a period where it isn't
being used.
All
reported instances of this problem have been related to one
or more the following:
Some
cleanup process on a Unix Web server is deleting the named
pipes in /tmp.
Solution:
Reconfigure FlashCONNECT so the named pipes are no longer
in /tmp.
A
timeout setting in a firewall located between D3 and the
Web server is killing the connections.
Solution:
Reconfigure the firewall.
The
D3 or Web server is being rebooted.
Solution:
Check and if necessary restart the connections.
11.
What development guidelines do you have?
While
we cannot provide design information specific to any application,
the following comments are available.
General
comments:
Web
page design comments:
-
HTML
goes in templates - not in the code.
-
One
designer uses the technique of creating prototypes of
my HTML pages, including using dummy data so the layout
can be seen. Then hardcoded references to dynamic data
are replaced with #unique# references. Many design issues
are identified and resolved when looking at a page that
resembles the final product. This process helps resolve
Web page design issues before coding starts.
-
As
part of your initial page design, decide how you are going
to present errors. Be sure to present errors consistently
throughout your application.
Program
design comments:
-
Isolate your business rules from display logic. The programs
which know about FlashCONNECT call subroutines which implement
the business rules. The business rules should be unaware
as to how the information will be presented. The FlashCONNECT
programs should know nothing about file layout.
-
Create
customized extensions to the FlashCONNECT API for building
common HTML code segments.
-
Modularize
the code that builds various segments of a web page. A
single program that builds an entire page can get a little
unwieldy at times, and debugging smaller routines is much
easier.
-
While
technically persistent connections work fine, they do
tie up a license, so avoid persistence (using w3Input)
unless it is required.
-
Try
to design an application so inbound requests have a common
entry point, or at least a minimum number of entry points
(w3Apps entries). Doing so allows easy implementation
of security and it also helps in cases where the user
shouldn't execute program B unless they first execute
A. This allows centralization of the navigation logic
into the common routine instead of cluttering the application
with this sort of housekeeping.
For
more assistance:
12.
What are common administrative problems?
The
most common problems can be resolved by:
-
Making
sure the fccgi.exe (Unix and NT) and fcisapi.dll (NT only)
programs are executable.
-
Making
sure the directory containing fccgi.exe and fcispi.dll
allows execution.
-
Reviewing
the w3Apps, w3Groups, and w3Users files and remove any
unneeded entries. For example, access to the D3Admin application
is enabled by default using the default guest logon. The
application allows management of the spooler and printer.
This is probably not a desired feature on a live production
system.
-
Until
the site is stable, make sure there is at least one default
server pool connection available.
-
Review
and perform the diagnostics before making a support call.
13.
When the logon screen is displayed rather than seeing the
label "User name" or "Password", "Message 19 was not found"
is displayed.
Most
of the messages displayed by FlashCONNECT are read from the
system Messages files. When FlashCONNECT is installed these
messages are copied from the w3Messages file to the system
Messages file. For the FlashCONNECT 1.1, 1.2, 2.0, and 2.1
releases, this can be done manually by running the following
commands from TCL in the www account:
D3
Unix releases:
D3
NT releases:
-
copy
w3Messages * (o
to:(dm,messages,
-
copy
w3Messages * (o
to:(fsi:dm,messages,