Re: async write completion prototype
On Oct 18, 2005, at 7:11 AM, Greg Ames wrote: Brian Pane wrote: I think one contributor to the event results is an issue that Paul Querna pointed out on #httpd-dev the other day: apr_pollset_remove runs in O(n) time with n descriptors in the pollset. thanks, I see it. yeah we are going to have to do something about that. I just committed a change to the epoll version that eliminates the O(n) loop--and the mutex operations and a bit of data structure copying. The version of the Event MPM on the async-dev branch takes advantage of this new feature. I'm seeing a ~5% increase in throughput in a simple test setup (http_load on a client machine driving ~200 concurrent connections over 1Gb/s ethernet to Apache running on Linux 2.6). If anybody with a more industrial-strength load testing setup can try the async-dev version of the Event MPM with a few thousand concurrent connections, I'm eager to hear whether this new epoll code yields a useful speedup. Thanks, Brian
Re: async write completion prototype
Brian Pane wrote: On Oct 18, 2005, at 7:11 AM, Greg Ames wrote: Brian Pane wrote: I think one contributor to the event results is an issue that Paul Querna pointed out on #httpd-dev the other day: apr_pollset_remove runs in O(n) time with n descriptors in the pollset. thanks, I see it. yeah we are going to have to do something about that. I just committed a change to the epoll version that eliminates the O(n) loop--and the mutex operations and a bit of data structure copying. Awesome! I really like it, a very nice addition to apr_pollset. I will try to update APR with KQueue support on Sunday. The version of the Event MPM on the async-dev branch takes advantage of this new feature. I'm seeing a ~5% increase in throughput in a simple test setup (http_load on a client machine driving ~200 concurrent connections over 1Gb/s ethernet to Apache running on Linux 2.6). If anybody with a more industrial-strength load testing setup can try the async-dev version of the Event MPM with a few thousand concurrent connections, I'm eager to hear whether this new epoll code yields a useful speedup. I agree, I have had problems in the past telling if any changes to the Event MPM have good or bad performance implications. Some of it is best guess, but it really would be nice to have a semi-reliable way to benchmark it that included Keep Alive connections. -Paul
Re: mod_ldap crash on exit (found why)
Vadim Chekan wrote: httpd version: current/trunk (2.2?) Platform: win xp pro SP2 I built Apache, added LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so ... LDAPSharedCacheFile "c:\ldap.cache" and this causes crash on exit. The crash happends at util_ldap_cache_mgr.c: util_ald_destroy_cache(). It attempts to free() a node with some garbage address. After some investigation I noticed that address of cache->nodes changes between process start and process ends. To make long story short: st->cache is allocated in shared memory. cache->nodes is also allocated in shared memory. Let's say parent process creates cache and nodes. Then parent executes cache->nodes = ShmAllocate(...); The child process starts. It attach to shared memory and do the same, allocate and, attention: cache->nodes = ShmAllocate(...); Yes - on Win32 this is an 'attach'... But as soon as this memory is shared, addres cache->nodes for child is different from parent. So child overrites parents cache->nodes! There are raw pointers in the shm? Well, in a fork() that's expected, but in attached shared memory, that's an invalid assumption. All 'pointers' within a shm must be an off_t from the shm base and dereferenced relative to the client's base address mapping. Then, on exit parent attempts to release an address that is meaningless in its process space. That indicates a lack of symmetry. Another thing I don't like too much is that both, parent and children will call apr_shm_destroy() I think correct way to do it would be children call detach() and only parent calls destroy() Not an issue, the shm isn't destroyed until the last reference is released. BTW: could comebody explain, how modules configs are shared between processes? Is an instance created by each process? Main process shares them with children via shared memory? On unix, it's already set up prior to fork(), on Win32 the config is passed from the parent->child and set up in that local child process. It's not 'shared memory' - even on unix the child's copy is local to that process. Therefore the only way to share info (e.g. caches and scoreboard) is to declare shared memory sections. Bill
Re: mod_ldap crash on exit (found why)
On 10/23/05, William A. Rowe, Jr. <[EMAIL PROTECTED]> wrote: > Vadim Chekan wrote: > > > But as soon as this memory is shared, addres cache->nodes for child is > > different from parent. So child overrites parents cache->nodes! > > There are raw pointers in the shm? Well, in a fork() that's expected, but > in attached shared memory, that's an invalid assumption. All 'pointers' > within a shm must be an off_t from the shm base and dereferenced relative > to the client's base address mapping. > > > Bill > Thans for your reply Bill, Is there a maintainer for this module or should I start working on a patch tha uses offset instead of address in shm? Vadim.
Re: mod_ldap crash on exit (found why)
Vadim Chekan wrote: Is there a maintainer for this module or should I start working on a patch tha uses offset instead of address in shm? The module is maintained, but it definitely needs more attention under Windows. If you provide a patch, it will definitely be reviewed. Regards, Graham -- smime.p7s Description: S/MIME Cryptographic Signature
Re: APR version of support/logresolve.c
On Fri, 21 Oct 2005, Colm MacCarthaigh wrote: > http://people.apache.org/~colm/logresolve.c I'd love to see this going in ! Dw.
Bug report for Apache httpd-1.3 [2005/10/23]
+---+ | Bugzilla Bug ID | | +-+ | | Status: UNC=Unconfirmed NEW=New ASS=Assigned| | | OPN=ReopenedVER=Verified(Skipped Closed/Resolved) | | | +-+ | | | Severity: BLK=Blocker CRI=CriticalMAJ=Major | | | | MIN=Minor NOR=Normal ENH=Enhancement | | | | +-+ | | | | Date Posted | | | | | +--+ | | | | | Description | | | | | | | | 8329|New|Nor|2002-04-20|mime_magic gives 500 and no error_log on Microsoft| | 8372|Ass|Nor|2002-04-22|Threadsaftey issue in Rewrite's cache [Win32/OS2/N| | 8849|New|Nor|2002-05-07|make install errors as root on NFS shares | | 8882|New|Enh|2002-05-07|[PATCH] mod_rewrite communicates with external rew| | 9037|New|Min|2002-05-13|Slow performance when acessing an unresolved IP ad| | 9126|New|Blk|2002-05-15|68k-next-openstep v. 4.0 | | 9726|New|Min|2002-06-09|Double quotes should be flagged as T_HTTP_TOKEN_ST| | 9894|New|Maj|2002-06-16|getline sub in support progs collides with existin| | |New|Nor|2002-06-19|Incorrect default manualdir value with layout.| |10038|New|Min|2002-06-20|ab benchmaker hangs on 10K https URLs with keepali| |10073|New|Maj|2002-06-20|upgrade from 1.3.24 to 1.3.26 breaks include direc| |10169|New|Nor|2002-06-24|Apache seg faults due to attempt to access out of | |10178|New|Maj|2002-06-24|Proxy server cuts off begining of buffer when spec| |10195|New|Nor|2002-06-24|Configure script erroneously detects system Expat | |10199|New|Nor|2002-06-24|Configure can't handle directory names with unders| |10243|New|Maj|2002-06-26|CGI scripts not getting POST data | |10354|New|Nor|2002-06-30|ErrorDocument(.htaccess) fails when passed URL wit| |10446|Opn|Blk|2002-07-03|spaces in link to http server seen as foreign char| |10666|New|Enh|2002-07-10|line-end comment error message missing file name | |10744|New|Nor|2002-07-12|suexec might fail to open log file| |10747|New|Maj|2002-07-12|ftp SIZE command and 'smart' ftp servers results i| |10760|New|Maj|2002-07-12|empty ftp directory listings from cached ftp direc| |10939|New|Maj|2002-07-18|directory listing errors | |11020|New|Maj|2002-07-21|APXS only recognise tests made by ./configure | |11236|New|Min|2002-07-27|Possible Log exhaustion bug? | |11265|New|Blk|2002-07-29|mod_rewrite fails to encode special characters| |11765|New|Nor|2002-08-16|.apaci.install.tmp installs in existing httpd.conf| |11986|New|Nor|2002-08-23|Restart hangs when piping logs on rotation log pro| |12096|New|Nor|2002-08-27|apxs does not handle binary dists installed at non| |12574|New|Nor|2002-09-12|Broken images comes from mod_proxy when caching ww| |12583|New|Nor|2002-09-12|First piped log process do not handle SIGTERM | |12598|Opn|Maj|2002-09-12|Apache hanging in Keepalive State | |12770|Opn|Nor|2002-09-18|ErrorDocument fail redirecting error 400 | |13188|New|Nor|2002-10-02|does not configure correctly for hppa64-hp-hpux11.| |13274|Ass|Nor|2002-10-04|Subsequent requests are destroyed by the request e| |13607|Opn|Enh|2002-10-14|Catch-all enhancement for vhost_alias?| |13687|New|Min|2002-10-16|Leave Debug symbol on Darwin | |13822|New|Maj|2002-10-21|Problem while running Perl modules accessing CGI::| |14095|Opn|Nor|2002-10-30|Change default Content-Type (DefaultType) in defau| |14250|New|Maj|2002-11-05|Alternate UserDirs don't work intermittantly | |14443|New|Maj|2002-11-11|Keep-Alive randomly causes TCP RSTs | |14448|Opn|Cri|2002-11-11|Apache WebServer not starting if installed on Comp| |14518|Opn|Nor|2002-11-13|QUERY_STRING parts not incorporated by mod_rewrite| |14670|New|Cri|2002-11-19|Apache didn't deallocate unused memory| |14748|New|Nor|2002-11-21|Configure Can't find DBM on Mac OS X | |15011|New|Nor|2002-12-03|Apache processes not timing out on Solaris 8 | |15028|New|Maj|2002-12-03|RedirectMatch does not escape properly| |16236|New|Maj|2003-01-18|Include directive in Apache is not parsed within c| |16241|New|Maj|2003-01-19|Apache processes takes 100% CPU until killed manua| |16492|New|Maj|2003-01-28|mod_proxy doesn't correctly retrieve values from C| |16493|New|Nor|2003-01-28|Incorrect handling of several Cache-Control direct| |16556|
Bug report for Apache httpd-2.0 [2005/10/23]
+---+ | Bugzilla Bug ID | | +-+ | | Status: UNC=Unconfirmed NEW=New ASS=Assigned| | | OPN=ReopenedVER=Verified(Skipped Closed/Resolved) | | | +-+ | | | Severity: BLK=Blocker CRI=CriticalMAJ=Major | | | | MIN=Minor NOR=Normal ENH=Enhancement | | | | +-+ | | | | Date Posted | | | | | +--+ | | | | | Description | | | | | | | | 7483|Ass|Enh|2002-03-26|Add FileAction directive to assign a cgi interpret| | 7741|Ass|Nor|2002-04-04|some directives may be placed outside of proper co| | 7862|New|Enh|2002-04-09|suexec never log a group name.| | 8483|Inf|Min|2002-04-24|apache_2.0 .msi installer breaks .log and .conf fi| | 8713|New|Min|2002-05-01|No Errorlog on PROPFIND/Depth:Infinity| | 8925|New|Cri|2002-05-09|Service Install (win32 .msi/.exe) fails for port i| | 9727|New|Min|2002-06-09|Double quotes should be flagged as T_HTTP_TOKEN_ST| | 9903|Opn|Maj|2002-06-16|mod_disk_cache does not remove temporary files| | 9945|New|Enh|2002-06-18|[PATCH] new funtionality for apache bench | |10114|Ass|Enh|2002-06-21|Negotiation gives no weight to order, only q value| |10154|Ass|Nor|2002-06-23|ApacheMonitor interferes with service uninstall/re| |10722|Opn|Nor|2002-07-12|ProxyPassReverse doesn't change cookie paths | |10775|Ass|Cri|2002-07-13|SCRIPT_NAME wrong value | |10932|Opn|Enh|2002-07-18|Allow Negative regex in LocationMatch | |11035|New|Min|2002-07-22|Apache adds double entries to headers generated by| |11294|New|Enh|2002-07-30|desired vhost_alias option| |11427|Opn|Maj|2002-08-02|Possible Memory Leak in CGI script invocation | |11540|Opn|Nor|2002-08-07|ProxyTimeout ignored | |11580|Opn|Enh|2002-08-09|generate Content-Location headers | |11971|Opn|Nor|2002-08-23|HTTP proxy header "Via" with wrong hostname if Ser| |11997|Opn|Maj|2002-08-23|Strange critical errors possibly related to mpm_wi| |12033|Opn|Nor|2002-08-26|Graceful restart immidiately result in [warn] long| |12340|Opn|Nor|2002-09-05|WindowsXP proxy, child process exited with status | |12680|New|Enh|2002-09-16|Digest authentication with integrity protection | |12885|New|Enh|2002-09-20|windows 2000 build information: mod_ssl, bison, et| |13029|New|Nor|2002-09-26|Win32 mod_cgi failure with non-ASCII characters in| |13101|Inf|Cri|2002-09-27|Using mod_ext_filter with mod_proxy and http/1.1 c| |13507|New|Enh|2002-10-10|capturing stderr from mod_cgi | |13599|Ass|Nor|2002-10-14|autoindex formating broken for multibyte sequences| |13603|New|Nor|2002-10-14|incorrect DOCUMENT_URI in mod_autoindex with Heade| |13661|Ass|Enh|2002-10-15|Apache cannot not handle dynamic IP reallocation | |13946|Inf|Nor|2002-10-24|reverse proxy errors when a document expires from | |13986|Ass|Enh|2002-10-26|remove default MIME-type | |14016|Inf|Nor|2002-10-28|Problem when using mod_ext_filter with ActivePerl | |14090|New|Maj|2002-10-30|mod_cgid always writes to main server error log | |14206|New|Nor|2002-11-04|DirectoryIndex circumvents -FollowSymLinks option | |14227|Ass|Nor|2002-11-04|Error handling script is not started (error 500) o| |14496|New|Enh|2002-11-13|Cannot upgrade 2.0.39 -> 2.0.43. Must uninstall fi| |14556|Inf|Nor|2002-11-14|mod_cache with mod_mem_cache enabled doesnt cash m| |14858|New|Enh|2002-11-26|mod_cache never caches responses for requests requ| |14922|Ass|Enh|2002-11-28| is currently hardcoded to 'apache2' | |15045|Ass|Nor|2002-12-04|addoutputfilterbytype doesn't work for defaulted t| |15221|New|Nor|2002-12-10|reference to old script: sign.sh | |15233|Opn|Nor|2002-12-10|move AddType application/x-x509-ca-cert from ssl.c| |15235|New|Nor|2002-12-10|add application/x-x509-email-cert, application/x-x| |15625|New|Nor|2002-12-23|mention mod_ssl in http://nagoya.apache.org/dist/h| |15626|New|Nor|2002-12-23|mention which modules are part of the (binary) dis| |15631|New|Nor|2002-12-23|mention in httpd.conf that mod_ssl is not included| |15719|Inf|Nor|2002-12-30|WebDAV MOVE to destination URI which is content-ne| |15757|Opn|Nor|2003-01-02|Assumption of sizeof (void*)/int begin equal (64-b| |15857|Opn|Nor|2003-01-07|MUST handle "chunked" response with a 16385Byte-lo| |15859|Opn|Nor|
Re: svn commit: r327872 - in /httpd/httpd/trunk: CHANGES include/httpd.h server/core_filters.c
On Sun, Oct 23, 2005 at 10:38:41PM -, [EMAIL PROTECTED] wrote: > Modified: httpd/httpd/trunk/server/core_filters.c > URL: > http://svn.apache.org/viewcvs/httpd/httpd/trunk/server/core_filters.c?rev=327872&r1=327871&r2=327872&view=diff > == > --- httpd/httpd/trunk/server/core_filters.c (original) > +++ httpd/httpd/trunk/server/core_filters.c Sun Oct 23 15:38:35 2005 > @@ -26,6 +26,7 @@ > #include "apr_hash.h" > #include "apr_thread_proc.h"/* for RLIMIT stuff */ > #include "apr_hooks.h" > +#include "apr_support.h" > > #define APR_WANT_IOVEC > #define APR_WANT_STRFUNC > @@ -57,6 +58,7 @@ > #include "mod_so.h" /* for ap_find_loaded_module_symbol */ > > #define AP_MIN_SENDFILE_BYTES (256) > +// #define APR_HAS_SENDFILE 0 sneaky! :-) -- Colm MacCárthaighPublic Key: [EMAIL PROTECTED]
2.1.9 Next Weekend
Just a heads up, I plan on doing a 2.1.9 tag/release late this week, most likely on Friday or Saturday. Help with back porting to branches/2.2.x is always welcome. -Paul
The 2.2.0 Process
As we get closer to the next stable/GA branch, I want to clarify with everyone how I imagine the process will happen. This isn't the process that is documented in VERSIONING, but I think it deals better with the 2.1.x -> 2.2.0 jump. 1) 2.1.N is tagged. 2) 2.1.N is voted on for BETA. 3) Assuming the vote passes, several days after releasing 2.1.N-BETA, a vote to mark 2.1.N-BETA as Stable/General Availability will be called for by the 2.1.N Release Manager. 4) If the vote passes, the 2.1.N tag will be copied to 2.2.0. Only the version numbers will be changed in Subversion. This 2.2.0 tarball will be placed in /dev/dist/ for final sanity voting. This final vote *should* be used only to verify that the packaging of the tag is correct. The code is identical to what passed the GA vote in step 3. 5) 2.2.0 will be released. Thoughts/Concerns? Thanks, -Paul
Re: async write completion prototype
On Oct 10, 2005, at 5:15 PM, Greg Ames wrote: - event-ize lingering close. it eats up roughly the same number of worker threads as synchronous writes for SPECweb99. Is this because the lingering close is waiting a while for the client to close the inbound side of the connection? Or is the lingering close finding that the connection is closed as soon as it does the "wait for I/O or timeout"--meaning that the reason the server spends a lot of time in lingering close is simply that the code for lingering close (poll+read+close plus various setsockopt calls) takes a while? Brian