Solved!
It appears that the problem was that I was being stupid (doh!) and using a relative url to render the 404 file, "../../public/404.html". Switching it to "#{RAILS_ROOT}/public/404.html" solved the problem.
The parent-fork thing must change the working directory, which caused the discrepancy between litespeed and other servers. It might be better to reset the cmd if possible, just to keep it consistent.
Stracing the proper pid let me see that it was getting the error, though i'm still not sure why 1) rails crashes like that, or 2) litespeed shows it as a 503 rather than 500. It's not a timeout, it happens right away...
write(1, "Rendering public/404.html (404)\n", 32) = 32
open("public/404.html", O_RDONLY) = -1 ENOENT (No such file or directory)
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getcwd("/usr/local/bin", 200) = 15
getcwd("/usr/local/bin", 200) = 15
getcwd("/usr/local/bin", 200) = 15
open("public/404.html", O_RDONLY) = -1 ENOENT (No such file or directory)
write(4, "set aph:session:f802551cd64f1e21"..., 961) = 961
read(4, "STORED\r\n", 1024) = 8
gettimeofday({1165712051, 488544}, NULL) = 0
fstat(1, {st_mode=S_IFREG|0644, st_size=5343777, ...}) = 0
write(1, "MemCache Put session:f802551cd64"..., 64) = 64
rt_sigaction(SIGINT, {SIG_DFL}, {0x46b990, [INT], SA_RESTORER|SA_RESTART, 0x3cfa62e410}, 8) = 0
close(4) = 0
munmap(0x2a97b36000, 4096) = 0
close(4) = -1 EBADF (Bad file descriptor)
munmap(0x2a97b35000, 4096) = 0
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0
setsockopt(5, SOL_SOCKET, SO_SNDTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
write(5, "\1\0\0\0\1", 5) = 5
shutdown(5, 2 /* send and receive */) = 0
close(5) = 0
exit_group(1) = ?
Process 13473 detached
Thanks again! You guys rock! Litespeed is the bestest project ever....
|