[PHP-SOAP-DEV] some benchmarks.
Status: Alpha
Brought to you by:
rodif_bl
From: Andrey H. <ahr...@ic...> - 2002-05-03 13:55:29
|
Ok. I realized. You meant dl('php_soap.so'); I've done some benchmarks this night but due to problems with my 2.5 years old windows 95 install I had no way to connect and send the results. I've also noticed the problem. See the results. There you can see that 12 errors on about 3600 request. Here are the results. I've no other suitable for mass testing tool - only ab. I did 3 benchmarks using the 'ab' tool (v. 1.3d) 1)Benchmarking PHP-SOAP extention: client script: hello_world_client.php <?php echo microtime()."<br>\n"; $hello = new SoapObject("http://192.168.1.140/hello_world_server.php", "urn:HelloWord"); $hello->hello_soap("alala"); echo microtime()."<br>\n"; ?> server script: hello_world_server.php <?php $server = new SoapServer("urn:HelloWord"); $server->addfunction("hello_soap"); $server->handle(); function hello_soap($message){ return "PHP-SOAP says ($message)"; } ?> Results: Concurrency Level: 5 Time taken for tests: 60.004 seconds Complete requests: 3645 Failed requests: 12 (Connect: 0, Length: 12, Exceptions: 0) Broken pipe errors: 0 Total transferred: 1057608 bytes HTML transferred: 189384 bytes Requests per second: 60.75 [#/sec] (mean) Time per request: 82.31 [ms] (mean) Time per request: 16.46 [ms] (mean, across all concurrent requests) Transfer rate: 17.63 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 3.4 0 63 Processing: 14 81 70.1 55 432 Waiting: 1 81 70.2 55 432 Total: 14 82 70.0 56 432 Percentage of the requests served within a certain time (ms) 50% 56 66% 98 75% 127 80% 144 90% 185 95% 222 98% 263 99% 283 100% 432 (last request) 2)Benchmarking XMLRPC extension. Mix of compiled routines and userspache functions(socket openings). client script: <?php require 'link_to_defs.php'; require SITE_LIB.'xmlrpc-utils.php'; echo microtime()."<br>\n"; $some = xu_rpc_http("fub",array(array('one'=>"someone"),"like","you"), SITE_DOMAIN, SITE_PATH.'server.php',80,0);// SITE_DOMAIN is 192.168.1.1.40 & SITE_PATH is "/" echo microtime()."<br>\n"; ?> server script: <?php require 'link_to_defs.php'; require SITE_LIB."xmlrpc-utils.php"; function greeting_func($method_name, $params, $app_data) { $name = $params[0]; return array("hello $name. How are you today?"); } $xmlrpc_server = xmlrpc_server_create(); if($xmlrpc_server) { // register methods if(!xmlrpc_server_register_method($xmlrpc_server, "greeting", "greeting_func")) { die("<h2>method registration failed.</h2>"); } $request_xml = $HTTP_RAW_POST_DATA; $foo = xmlrpc_server_call_method($xmlrpc_server, $request_xml, $response, array(output_type => "xml")); xu_server_send_http_response($foo); $success = xmlrpc_server_destroy($xmlrpc_server); } ?> Results: Concurrency Level: 5 Time taken for tests: 60.082 seconds Complete requests: 1392 Failed requests: 0 Broken pipe errors: 0 Total transferred: 403970 bytes HTML transferred: 72436 bytes Requests per second: 23.17 [#/sec] (mean) Time per request: 215.81 [ms] (mean) Time per request: 43.16 [ms] (mean, across all concurrent requests) Transfer rate: 6.72 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.5 0 11 Processing: 41 215 92.6 211 746 Waiting: 41 215 92.6 210 745 Total: 41 215 92.7 211 753 Percentage of the requests served within a certain time (ms) 50% 211 66% 245 75% 270 80% 289 90% 332 95% 374 98% 424 99% 495 100% 753 (last request) 3)NuSOAP library - fully user space. client script (I got it from the NuSOAP package): nusoap_client.php: <?php echo microtime()."<br>\n"; require_once('nusoap.php'); $parameters = array('name'=>'dietrich'); $soapclient = new soapclient('http://192.168.1.140/nusoap_server.php'); $soapclient->call('hello',$parameters); echo microtime()."<br>\n"; ?> server script: <?php require_once('nusoap.php'); $s = new soap_server; $s->register('hello'); function hello($name){ if($name == ''){ return new soap_fault('Client','','Must supply a valid name.'); } return "hello $name!"; } $s->service($HTTP_RAW_POST_DATA); ?> Results: Concurrency Level: 5 Time taken for tests: 60.064 seconds Complete requests: 165 Failed requests: 0 Broken pipe errors: 0 Total transferred: 48140 bytes HTML transferred: 8632 bytes Requests per second: 2.75 [#/sec] (mean) Time per request: 1820.12 [ms] (mean) Time per request: 364.02 [ms] (mean, across all concurrent requests) Transfer rate: 0.80 [Kbytes/sec] received Connnection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 1316 1779 153.2 1778 2920 Waiting: 1316 1779 153.1 1778 2919 Total: 1316 1779 153.2 1778 2920 Percentage of the requests served within a certain time (ms) 50% 1778 66% 1804 75% 1860 80% 1871 90% 1951 95% 1973 98% 2061 99% 2120 100% 2920 (last request) CONCLUSIONS: As you may see the SOAP extension is the fastest. It is roughly 3 times faster than XMLRPC and more than 30 times faster than NuSOAP. However PHP-SOAP is in the beggining of its life so it might become slower but might faster. The testing configuration is: Hwd: AMD K6-2/300;96MB RAM PC100;Chaintech AGM2 MB;Fujitsu 4.3GB HDD OS : Linux Mandrake. Kernel 2.4.18. Http server : Apache 1.3.23 (this comes with Mandrake 8.2)/PHP 4.0.2RC2 The testing machine is slow for today's standarts but PHP-SOAP is working fast. K6-2/300 is about 2-3 times slower than PIII/500. Think about new machine at 1.6Ghz. Andrey |