It's probably the same as ns_getform failed: Success, which we see on
our site. I think the error code mapping is incorrect in AS, at least
for Linux.
Jim
Can anyone explain this error message for me?
[18/Sep/2002:11:23:34][1790.9221][-conn2-] Error: nscgi: wait for
/usr/bin/perl failed:
What I would really like to see is a better wakeup mechanism so that
all of the threads don't wake up at once when a new request comes in.
I think that's how it works now in many cases, though don't know for
sure.
The other thing that is a problem is that threads seem to service
requests in
Personally, I like hard failures.
If I configure a database in my nsd.tcl, it seems obvious that I want
a database. If the server starts anyway without one, then instead of
having an immediate, obvious error to handle, I have a subtle one. I
go to my home page, and the page comes back, so I
Do you use ns_share arrays, and are you using TCl 7.6? If so, there is
a critical bug in the server.
The following code will bomb the server at random, because of a race
condition:
ns_share x
set x(1) 1
if {[info exists x(2)]} {
}
If you execute this 1000x per second or so, the server will
Yeah, I agree. Get a flood of these is not much fun.
I apologize for not posting on SF. I did go there, couldn't figure
out what the hell to do (even though I know I am registered there),
probably couldn't remember the password I registered with anyway, so I
punted and just replied to the
For the folks who do not like the SF email on the regular AS
discussion list, shutting down the regular list and making it SF-only
would be exactly the wrong thing to do.
Personally, I wouldn't mind getting a SF email summary once per week
on this list, or even better, a web link to a summary
Has anyone ever though about using BBS software, like UBB or vBulletin?
It's more like a community. SF is a development environment.
Jim
On Tuesday, October 22, 2002, at 10:51 AM, Scott S. Goodwin wrote:
I don't think anyone was suggested shutting down the AOLserver
discussion list, just
In general, is it possible to change the AOLServer configuration at run
time by using the ns_section and ns_param commands?
- Gabriel
No, in general you cannot change an AS config at runtime by fiddling ns_param
commands. These commands are all processed at startup. For example, when you
Here is a TCL hack to serve files w/o case sensitivity (not tested):
ns_register_proc GET / servit
ns_register_proc POST / servit
ns_register_proc HEAD / servit
proc servit {conn ignore} {
set url [string tolower [ns_conn url]]
if {[file exists [ns_info pageroot]$url]} {
ns_returnfile
Since AOL has already picked its representation, it seems to me they
should not vote on the community half of the core team. Not that
their votes would necessarily be wrong or bad or have any nefarious
intention, but more in the interest of fairness, as has been said
before. Just my opinion.
This brings up another question: what constitutes a voting member?
Does one company get 1 vote, or does each employee at a company get a
vote?
Each member of the core team should have a vote, regardless of company.
I meant in the community, who gets a vote?
On Saturday 09 November 2002 19:43, you wrote:
Since the TCL core already has all this stuff in it about binding TCL
vars to C vars, it seems plausible to use it for ns_shares and get
7.6-like performance without needing traces.
Ehm... the Tcl bindings *use* traces internally, i.e. on
Very cool info! Thanks for the easy peek at them. -Jim
I've made Nathan's stats package available on a temporary server so you
can get a look at it.
The cd TCL command does not work in AOLServer, because all threads share the same
working directory. When executed in multiple threads simulataneously, you have a
race condition.
We do this in _init.tcl, the first modules we load with AS:
rename cd {}
That disables the cd command altogether,
During file uploads with mime/multipart, we've noticed that if a user aborts
an upload, the temp files hang around. Here's a patch to modules/tcl/form.tcl
that fixes this problem by unlinking the temp files immediately after they
are created. This works on Unix, but may not be portable on other
I think that you will run into problems with optimization unless you
use all the gcc options to tell it that statics are volatile. Most
compilers will assume that statics within a C function can only be
changed by that function, but that isn't true with multiple threads
executing the code.
We're
I posted a change yesterday to form.tcl, the purpose being to ensure
that temp files got deleted if the upload is aborted. But I goofed
and changed ns_atclose to unlink; not good.
Here is another diff. The idea is to unlink the main temp file right
after creating it, before ns_conncptofp has a
Here's an idea: make a directory like config for the nsd stuff.
Have a main file there, plus a bunch of module config files. All of
the module config files get sourced by a loop in the main file. This
would eliminate having to list the modules in the main file and also
have a config section for
Happy New Year Nathan!
Check here:
http://www.rubylane.com/public/rlreturnz/rlreturnz.c
If it has a performance impact, we have not noticed it. There are
some browser issues, for example, with Netscape 3 on a framed site.
My theory is that Netscape's gzip decompression routine has issues
when
Before investing a lot of time/energy into storing the gzip results,
someone may want to do some benchmarks. For a low-volume site,
nothing matters. On a high-volume site, storing a large cache of gzip
results on disk will put more pressure on the memory subsystem.
If someone decides that
I think it is browser-dependant whether gzip decompression is performed
after all data is received. Here is a quote from the Mozilla site, at
http://www.mozilla.org/projects/apache/gzip/
The current Mozilla source already sends Accept-encoding: gzip and
can do a streaming decompression of HTML
That's a server bug. It was mentioned a long time ago on the list...
Jim
What about the lack of a space before the 400? is that a buglet in the
nslog code? or some other issue I should be concerned with?
- Original Message -
From: Scott Goodwin [EMAIL PROTECTED]
To: [EMAIL
IMO, it would be nice to have a way to poll the server to see if the current
connection has died. But killing threads immediately when that happens would
be very bad. All kinds of things could be left in inconsistent states on
complex sites.
Jim
On Fri, 2003-01-24 at 23:58, Andrew Piskorski
Put catches around your locked code and you may find a bug, for example,
incrementing an array var that doesn't exist or unsetting an array var
that doesn't exist. Without ns_mutex calls, the code may blow up but
your server won't lock up.
Jim
This message is in MIME format. Since your mail
We have shutdown problems all the time with 3.4.2. Just another data point.
Jim
--part1_ab.2896ff19.2b66f56c_boundary
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
In a message dated 1/27/2003 3:36:18 PM Eastern Standard Time,
[EMAIL PROTECTED] writes:
I
Are the changes such that a cache can be either per-virtual-server or
per-server? It might be useful to retain the ability to have a
server-wide cache.
I sat down Friday afternoon with Jim's excellent short document
describing how to make a module virtual server aware, and after an hour
or
You need to use two different DB handles, since the state of 2 selects cannot
be maintained in 1 DB handle.
Can I not nest ns_db select statements?
set classes [ns_db select $dbh SELECT * FROM classes]
while {[ns_db getrow $dbh $classes]} {
ns_puts trtdClass: .../td/tr
set
It seems that if people wanted to use generally-available TCL packages
inside AOL, it'd be nice if cd worked and was per-thread. Otherwise,
even if the TCL internals are fixed to lock around the temporary cd
fiddling it does in realpath or wherever else, ordinary TCL packages
still won't work in
We still have instances where AOLServer (3.2) goes deaf for some
reason. The nsd processes are there, but they aren't handling any
requests. So while I think this suggestion is a good idea, it
probably won't take the place of watchdog monitoring, at least not
for real production sites. Are you
We had a weird problem like this with ns_shares. There was a race in
the shared array variable evaluation code that occurred around 1 in
20K requests on a production server.
To track it down, I had to use 2 dedicated dual-cpu servers on a
100Mbit LAN, and used ab on one server to send
The thing is I can't reproduce it, even when doing ab on both the same
host and another one on a 100MBit LAN. I've hit about 3k hits and
nothing.
You are sending concurrent requests, right?
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email
FWIW, I hate having a bunch of separate TCL routines to do related
things. IMO, one of the nice things about TCL is that knowing you
want to do a file thing makes it reasonable to look at [file] first,
not [openfile], [rewindfile], [truncatefile], ... Separate routines
makes it harder to find
Cool, thanks. We're still on the 3.2 and using 7.6 TCL, so I'll have
to fiddle this a bit. It just seemed like some form of ns_thread (or
something else) should return the pid, but I couldn't find it.
Thanks again,
JIm
On 2003.08.09, Jim Wilcoxson [EMAIL PROTECTED] wrote:
This seems like
Hello - does anyone know an easy way to relate the Unix process ID (Linux)
for an AOLServer thread back to the server.log file. Can TCL get the
Unix process ID for a thread?
From what I can tell, server.log entries say [PPID.xxx], where:
[09/Aug/2003:11:38:33][23511.6151][-conn0-] Notice:
[ns_info pid] does return the parent nsd process on 3.4.
On a production system, when top or ps shows an nsd process chewing up
90% of a CPU, it would be useful to relate that to server.log entries.
Or something. Right now it can't be related to anything. The parent
nsd's process number isn't
I think Solid has versions of their database server that:
- can be loaded directly with the application; no separate process
- are thread-safe
- have support for in-memory tables
http://www.solidtech.com
Good luck!
Jim
I don't intend to go back and change that particular application now,
and
You can easily bind to more than one port/IP address, however, I
believe all requests in 3.x are dumped into a common connection queue,
which does not solve the original problem. It sounds like you want
multiple connection queues, so that one can be overloaded yet the
other is still getting
In a message dated 11/18/2003 12:03:27 AM Eastern Standard Time,
[EMAIL PROTECTED] writes:
Subject: Re: Jim's Sunday commits and AOLserver 4.1
On 2003.11.17, Jim Davidson [EMAIL PROTECTED] wrote:
Glad somebody noticed the new code :) The changes to kick of 4.1 were in
two
areas:
1.
Try ns_writecontent. That will write the post data to a file (I think)
and then you can muck with the file data using TCL. So, for example:
# get interp # for a unique file name (or use ns_mktemp, or ...)
set me [ns_info interp]
set fd [open /tmp/post$me w+]
ns_unlink /tmp/post$me
Instead of putting notfound.html as your parameter, you could use
notfound.tcl and create a new tcl script with this line:
ns_returnfile 404 text/html [ns_server pageroot/global/notfound.html
Save this script as /global/notfound.tcl
Good luck!
Jim
I would like my server to return a custom
And don't forget the closing bracket after pageroot, like I did! ;)
Instead of putting notfound.html as your parameter, you could use
notfound.tcl and create a new tcl script with this line:
ns_returnfile 404 text/html [ns_server pageroot/global/notfound.html
Save this script as
Because this is implemented using a general internal redirect
mechanism in the server. For AS to return the 404 automagically, it
would need a default http status field in the connection structure
to keep track of this state, and then there would be some confusion
over what to do with the default
Mathopd will have higher latency as an image server, because it is
single threaded and doesn't do asynchronous disk I/O. So on a
high-end server, the number of IOs/sec it can generate is limited. AS
does not have this problem since it is multi-threaded.
However, mathopd services requests in a
My personal opinion is that one of the responses to this simple
question was pretty shitty, and totally inaccurate.
In our experience, an image-serving copy of AOLserver with 30 threads
configured runs in about 25MB, regardless of the load, and serving
dynamic content on 30 threads takes
Here's a script to dump out the memory pool info:
set text
set elname blocksize nfree nget nput nrequest nlock nwait
foreach pel [ns_info pools] {
append text \nPoolname: [lindex $pel 0]\n
set i 0
foreach el [lindex $pel 1] {
append text [lindex $elname $i]: $el\n
These messages mean that the server received a request, but there were
no free connection threads to pass the request to, ie, all of your threads
were busy.
The naive solution is to increase MaxThreads, but this likely won't
solve your problem. For example, if your machine is out of CPU,
setting
Your servername may not be set correctly in nsd.tcl, so it isn't
looking at the enabletcl directive in your /ns/server/servername
section.
Jim
It is very strange but I don't see no 'Notice: tcl:
enabling .tcl pages'...
And it also seems that my enabbletcl true statement in
my config file
Hi -
For 3.4x, look in nsd/return.c and nsd/fastpath.c; fastpath is calling
Ns_ConnSetLastModifiedHeader in return.c to set Last-Modified. This
routine calls Ns_ConnSetHeaders, which does an ns_set put, but it
could easily call Ns_ConnCondSetHeaders, which would only do the put
if the header
In one of the 3.x releases, I think after 3.2, AS stopped reporting
the details of SQL select errors. Instead of giving the detailed
SQL error, like expected comma after blah, AS started reporting
Query was not a statement returning rows. This isn't very useful
for error trapping and reporting.
the not
returning rows one.
Bas.
Jim Wilcoxson said:
In one of the 3.x releases, I think after 3.2, AS stopped reporting
the details of SQL select errors. Instead of giving the detailed
SQL error, like expected comma after blah, AS started reporting
Query was not a statement returning rows
I made this suggestion a while ago (sending the output in an output
thread). One argument against it at the time is that on a
multi-processor machine, you may not be able to take advantage of all
the processors. However, input and output spooling is not CPU
intensive, so I don't think it's all
For 3.4, it's:
Ns_Conn *conn;
/* get connection structure */
conn = Ns_TclGetConn(interp);
if (conn == NULL) {
Tcl_AppendResult(interp, NULL conn??, NULL);
return TCL_ERROR;
}
Jim
Is there a way to obtain the current connection's Ns_conn if
it's not passed into a C
Sets allow entries with duplicate keys. If duplicates are returned in
the list for this new ns_set keys, that's fine, except that a naiive
programmer can't go through the list of keys returned and fetch the
corresponding values. You'd have to do a foreach loop on the keys,
increment a counter,
If you are interested in adding historical stuff to the archive, I have
the mailing list from March 23rd, 1996 to Oct 9, 1999. Lemme know.
Jim
As an added bonus (!!!), I've supplied my own personal mail archive of
all the messages I've received from the list since January 2000 when the
list
filter!
Jim
On 2004.06.18, Andrew Piskorski [EMAIL PROTECTED] wrote:
On Fri, Jun 11, 2004 at 02:50:40PM -0700, Jim Wilcoxson wrote:
If you are interested in adding historical stuff to the archive, I have
the mailing list from March 23rd, 1996 to Oct 9, 1999. Lemme know.
That would
Hi - here are my thoughts on compatibility:
Breaking compatibility at the TCL level is worse than breaking it at
the C level. If someone wants to write a new, incompatible version of
ns_return for example, it should be called something else and a
compatibility wrapper written for ns_return that
How do people feel about this? Is glob matching wanted enough to incur
that per-request cost -- only if you're configured for software virtual
hosting, of course.
How about:
try hash match
if not found
try glob matching against the list of virt. server wildcards
if found a match
A suggestion: the SQLite DB driver could keep a serial number that is
incremented whenever the DB is modified by the driver. The driver
could then re-open the DB if the file handle it gets from gethandle is
stale. It wouldn't work in the case of another process outside the
web server modifying
I seem to recall that the form file upload handler was rewritten in C
for 3.5. It was in TCL before that.
You could write a test script that does your file upload and runs an
md5 on the temp file, while it still exists, with the exec command.
Do a bunch of those with the old server and new
From my point of view, focusing on protocols is not necessarily the
only reason to want thread pools. I'm not all that familiar with AS 4
yet, so maybe I'm being dense here... keep that in mind. :)
The reason thread pools would be interesting to me personally is to be
able to control quality of
Hi - To put spiders in a separate thread pool, mapping requests to
thread pools by url doesn't work. You have to map by regular
expression on the User-Agent header or by IP address, assuming you can
figure out where Google's robots live. That's why I was suggesting
that the dispatching algorithm
Hi - a few suggestions/ideas:
1. How many requests per second do you average, and what are your
burst rates like? What are your vmstat numbers like during average
and burst request processing, and how do they compare to when your
system is lightly loaded? Getting familiar with these numbers
maxconnections should be high, like 100. This is the number of
keepalive socket connections your server maintains. These are low
overhead, and make it faster for active browsers to get pages from you
site since they don't have to reconnect. We use a keepalive timeout
of 15 (seconds). That
figure out where Google's robots live. That's why I was suggesting
that the dispatching algorithm needs to be a registered proc.
Perhaps it could be both.
Yeah, that would be nice. No doubt many people would want to group
just by URL, and that would solve several of the cases I raised.
packages :-)
...
On Thu, 2004-08-19 at 06:14, Jim Wilcoxson wrote:
I guess I was unclear in my earlier note:
1. The HTTP driver thread reads all input for request, w/o blocking.
My understanding is that this is now happening in AS 4 - great!
2. A conn service thread creates
You can also get a zero content length logged if you have a C module
that does Ns_ConnWrite and writes the headers and content itself, then
closes the connection (even if there is a valid Content-Length header
on the response), or if nothing is written out - for example, your TCL
script goofs up
I am a bit on the sidelines, because of a) time constraints, and b)
we're using ns_shares heavily and so are stuck with TCL 7.x, which is
no longer supported. (I know there are hacks in TCL 8 for ns_shares,
but when we benchmarked them, they were much slower. So no compelling
reason to upgrade,
Hi - I read the entire thread mentioned below, and missed any mention of
anyone saying the AS maintainers would not accept FastCGI.
The other thing I guess I'm confused about, is that CGI is implemented
as an AS module. Why can't someone write a FastCGI module, and
whoever wants it can load it
Hi - I don't know how others feel, but one of the community issues
I'm having is that a mailing list is not a great place to have 5
discussions going on at once, IMO. If the mailing list does get more
active (which in a way would be great), I would probably have to just
unsubscribe.
I think it's
Maybe an interface to memcached would make sense...
Nsvs are, to me, global in essence. As such, I don't really see making
namespace aware as a good goal.
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to [EMAIL PROTECTED]
with the
body of
101 - 170 of 170 matches
Mail list logo