Dear all, on sourceforge is a release candidate for NaviServer 4.99.15 (see [1]). Below is a - preliminary - summary of changes. IF you have more changes for this release. please commit or get in touch with me. If everything goes well, the release should follow next week (em, next year).
Please test if possible. best regards -gustaf [1] https://sourceforge.net/projects/naviserver/files/naviserver/4.99.15/ ======================================= NaviServer 4.99.15, released 2017-XX-XX ======================================= New Features: - Multiple driver threads for listening on the same port: When OS kernels support SO_REUSEPORT (which is the case on Linux since Kernel 3.9, Mac OS 10.3, Solaris 11, *BSD), one can specify now multiple driver threads for exactly the same listening address (protocol/IP-address/port) via the new config option "driverthreads" with a value larger than 1. With this new feature, NaviServer supports now for all stages of a request multi-threaded execution (driverthreads, spoolerthreads, connection threads, and writerthreads). Tests show that even with high number of concurrent clients, one can improve the throughput for high numbers of concurrent clients slightly (e.g. for 2 driverthreads and 250 concurrent clients, the throughput increases by ~9%, see https://www.mail-archive.com/naviserver-devel@lists.sourceforge.net/msg03445.html) Note: When using multiple driver threads on privileged ports, one has to add "#" followed by the number of necessary bind operations to the prebind address. Otherwise, prebind will bind to the address only once, and only one driver thread can be used. - Dynamic connection thread pool mapping: The new version of NaviServer extends the mapping of requests to connection thread pools by making it (a) introspectible and (b) dynamic (changeable at runtime). Dynamic thread pool mapping can avoid overlong blocking of connection threads by an unexpected peak of slow requests by moving these to a separate connection pool. For a detailed motivation, see https://www.mail-archive.com/naviserver-devel@lists.sourceforge.net/msg03446.html. The following new subcommands of "ns_server" implement the dynamic mapping to connection pools: * ns_server ?-server /s/? ?-pool /p/? map ?-noinherit? ?/mapspec/? Map HTTP-method and path (mapspec) to a certain pool, or list mappings from a pool (when no mapspec is given) * ns_server ?-server /s/? mapped ?-exact? ?-noinherit? /mapspec/ Obtain the pool for a mapspec (HTTP method and path) * ns_server ?-server /s/? ?-pool /p/? unmap ?-noinherit? /mapspec/ Undo previous mapping - New commands to obtain network driver information: * ns_driver info Return per driver detailed configuration information (name of module, type of driver, associated server, configured location, protocol, address, sendwait recvwait, and extraheaders) * ns_driver names Return a list of the names of the loaded driver modules. * ns_driver threads Return a list of the names of the driver threads * ns_driver stats Return for every driver thread the name of the driver module, the number of received requests, the number of spooled requests, the partial requests (received via multiple receive operations), and the number of errors. - Obtain detailed timing results from currently running request * ns_conn partialtimes Returns detailed timing snapshot about the current requests. The result is a dict containing the keys "accepttime", "queuetime", "filtertime", and "runtime" (similar to the per-pool timing statistics in "ns_server stats") - Added debug severity "Debug(nsproxy)" for separate debugging of nsproxy. Performance Improvements: - Move JoinConnThread() out of lock to reduce locking duration and to improve scalability. Bug Fixes: - Better error behavior, when prebind fails. - Make sure, that URLs produced by urlspace's walk callbacks are proper list elements. - Make startup more robust, when called with invalid arguments. - nsproxy: * Don't reset timeout for for reaper when slaves already expired * Improve debug messages Documentation improvements: - improved sample config files * added new config parameters * document parameter "listenbacklog" - improved/new documentation pages of * admin-maintenance * ns_cgi * ns_conn * ns_connchan * ns_driver * ns_filestat * ns_http * ns_httpopen * ns_itcl * ns_parseargs * ns_register * ns_sendmail * ns_server * nssock * nsssl * nsv - more consistent capitalization: * use Tcl instead of TCL * use HTTP (or HTTPS) instead of http (or https). Tcl API Changes: C API Changes: - Additional argument for reuseport for Ns_SockBind(), Ns_DriverListenProc(), Ns_SockListenEx(), Ns_SockBindUdp(), and Ns_SockListenUdp(). Incompatible API Changes: Configuration Changes: - New parameter for drivers (e.g. nssock) * Boolean Parameter "reuseport": When the parameter is set and SO_REUSEPORT is supported by the os, NaviServer will allow multiple listen operations on the same port (default: false) * Integer Parameter "driverthreads": set to a value > 1 when multiple driver threads should be used (default: 1). When multiple driver threads are configured, parameter "reuseport" is automatically set to "true". - New Boolean parameter "mutexlocktrace" for section "ns/parameters": When this parameter is set to true, timing of long mutex calls are printed to stderr. Command Line Changes: - Value provided to prebind option (-b) can be extended by a suffix "#n", where n is the number of prebound sockets (when e.g. multiple driver threads are used on privileged ports) Code Changes: - Extended regression tests * ns_conn.test * ns_driver.test * ns_server.test - Driver reform: make distinction explicit between driver type (e.g. "nssock"), driver name (e.g. "nssock1"), and driver thread name (e.g. "nssock1:1") - Moved definition of type "bool" from ns.h to nsthread.h to make boolean types as well available in nsthread implementation. - Make it possible to pass alternative implementation of CPPCHECK to Makefile - Don't mess around with FD_SETSIZE - Don't use implementation defined NULL as last argument of variadic functions - Reduced size of huge switch statements - Reduced variable scopes - Reduce number of return statements before end of function - Added const declarations - Silenced static checker -- Univ.Prof. Dr. Gustaf Neumann WU Vienna Institute of Information Systems and New Media Welthandelsplatz 1, A-1020 Vienna, Austria ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ naviserver-devel mailing list naviserver-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/naviserver-devel