| shenvo 回复于:2003-01-15 13:41:46 |
| 跑jsp这么耗内存吗,这和运行什么样的服务器也有关系吧,请问斑竹tomcat,resin哪个性能更好些(同等条件下) |
| 南非蜘蛛 回复于:2003-01-15 13:44:32 |
| [quote:afe8c42037="shenvo"]跑jsp这么耗内存吗,这和运行什么样的服务器也有关系吧,请问斑竹tomcat,resin哪个性能更好些(同等条件下)[/quote:afe8c42037]
我觉得不要钱的好,纯属个人意见,不代表版本意见,呵呵 |
| neteagle 回复于:2003-01-16 13:48:29 |
| 我的tomcat比较夸张,环境为redhat AS 2.1+apache1.3.27+tomcat 4.1.18,jdk为IBMJDK1.3.1,数据库为oracle9I,开始时每个java占用内存为25M,随着访问的增加开始上升到100多M,多时达到300多M,没有访问后java占用的内存并不释放,只有重起tomcat才能释放内存,我一直找不到原因,蜘蛛你知道吗? |
| 南非蜘蛛 回复于:2003-01-16 13:55:17 |
| [quote:a9d1723b7c="neteagle"]我的tomcat比较夸张,环境为redhat AS 2.1+apache1.3.27+tomcat 4.1.18,jdk为IBMJDK1.3.1,数据库为oracle9I,开始时每个java占用内存为25M,随着访问的增加开始上升到100多M,多时达到..........[/quote:a9d1723b7c]
是你的程序没有释放内存吧??? |
| neteagle 回复于:2003-01-16 14:09:15 |
| 对,tomcat没有释放内存,一个java仍然占用300多M内存,
只有重起tomcat才能释放 |
| 南非蜘蛛 回复于:2003-01-16 14:11:10 |
| [quote:de9500e94e="neteagle"]对,tomcat没有释放内存,一个java仍然占用300多M内存,
只有重起tomcat才能释放[/quote:de9500e94e] 我查查资料,我觉得是你程序写的有问题,不是tomcat的问题 |
| neteagle 回复于:2003-01-16 14:16:36 |
| 我先用我自己的应用出现问题,
后来用了你上面贴里的那个helloword.jsp 用ab测试 |
| ygzq 回复于:2003-04-03 10:52:05 |
| [quote:07cc0e3071="南非蜘蛛"]除了JSP之外,其它几种CGI/脚本的表现大致是正常的。Perl程序解释执行,作为
CGI运行时又需要另外fork进程,所以最慢;mod_perl和PHP都直接在httpd内部运 行脚本,省掉了fork的消耗,所以快了很多;C程序虽然本应最快,但作为CGI 运 行时也是因为fork而使性能大打折扣。[/quote:07cc0e3071] simple c cgi should be much more quicker than listed. forking a perl takes about 4 MB memory while forking a simple c program can be ignored (yes still some overhead). agree that c cgi should simple. price for php and mod_perl is that you end up with a much larger httpd file which needs more resources to run - no free lunch as it says. so the system can be really slow when/before it establishes its httpd process pools, and when there are a lot of users so new httpd processes need to be created. |
| 麻辣 回复于:2003-10-20 01:47:45 |
| 无意中发现这个帖子,我也测试了一下,和上面的结果完全不同
理论归理论,还是多实测,不同的代码不同的环境可能有不同的测试结果。 我的测试结果完全相反(在windows环境)perl普通状态(没有mod_perl)下不但不慢,还比PHP要快 测试完成相同加法运算,循环1000000次(如果您的机器配置比较底,可以减少循环次数) 雷鸟2000+ 256兆内存,考虑到加上编译时间,做了两个脚本: ######perl.cgi######### #!/usr/bin/perl use Benchmark; $TT0 = new Benchmark; do "test.cgi";#用DO命令调用test.cgi脚本来计算总时间 exit; #######test.cgi######## print "Content-type: text/html\n\n"; $abc=1000; for ($i=1;$i<1000000;$i++){ $abc=$abc+100; } print "运算结果$abc"; $TT1 = new Benchmark; $td = Benchmark::timediff($TT1, $TT0); $td = Benchmark::timestr($td); $td =~ /(\d+)\s*wallclock secs \(\s*?(\d*?\.\d*?)\s*usr\s*\+\s*(\d*?\.\d*?)\s*sys/i; my $alltimas=($2+$3)*1000; print "<center>CPU 时间:$2 usr + $3 sys 合计运行时间 $alltimas 毫秒"; ###########然后运行perl.cgi, php没有类似do命令,要得到编译时间需要到dos窗口: ######此脚本插入到下面的test.php两个脚本中间############## <?php $sum = 100; for($i=0;$i<1000000;$i++){ $sum += 100; } echo $sum; ?> ######gettime.php######## <?php list($usec, $sec) = explode(" ",microtime()); echo sprintf("%.8f", ((float)$usec + (float)$sec)); ?> #########output.php############### <?php $fp1 = fopen("first.txt", "r"); $fp2 = fopen("last.txt", "r"); $time1 = trim(fgets($fp1)); $time2 = trim(fgets($fp2)); fclose($fp1); fclose($fp2); echo "\n\nTotal time: "; echo sprintf("%.8f", $time2 - $time1); echo " second(s)"; ?> ##########test.php############# ########dos窗口执行下面批处理b.bat###### echo Notice: [testfilename] should be with extension echo if [testfilename] does not existing, echo the default file do.php is used echo !!! REMEMBER: change the PHP_BIN system variable echo to your own directory !!! echo ------------------------------------------------ pause set PHP_BIN=c:\php\php.exe set TESTFILE=%1 if "%TESTFILE%" == "" goto error if EXIST %TESTFILE% goto ok goto error echo Benchmark: %TESTFILE% ... goto normal :default set TESTFILE=do.php goto ok :normal %PHP_BIN% -f gettime.php > first.txt %PHP_BIN% %TESTFILE% %PHP_BIN% -f gettime.php > last.txt %PHP_BIN% -f output.php goto end :error echo No such a file: %TESTFILE% echo Using default... goto default :end set TESTFILE= set PHP_BIN= @echo on ################完################ 运算结果: perl: 运算结果100000900 CPU 时间:0.60 usr + 0.00 sys 合计运行时间 600 毫秒 php: 0.7801044秒(780毫秒) 也可以不用上面那么麻烦,两个都直接在IE下测试,都忽略脚本的编译时间,肉眼观察windows进程管理器图示曲线就很明显, perl站用的cpu也是要少一些。和上面的测试结果相同 #######直接IE窗口运行test.cgi######## #!/usr/bin/perl print "Content-type: text/html\n\n"; $abc=1000; for ($i=1;$i<1000000;$i++){ $abc=$abc+100; } print "运算结果$abc"; #########直接IE窗口运行test.php############## <?php $sum = 100; for($i=0;$i<1000000;$i++){ $sum += 100; } echo $sum; ?> |