Java Tomcat vs PHP CLI Server 性能对比

测试环境:

Ubuntu 14.04 with i5-3230M

Tomcat 8.0.5 with 64bit jre1.7.0_55

PHP 5.5.8 with Zend OPcache v7.0.3-dev

测试脚本: 显示当前服务器时间

Java Tomcat: t.jsp

<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>JSP测试</title>
    </head>
    <body>
	<% java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); %>
	<%=sdf.format(new java.util.Date()) %>
    </body>
</html>

PHP CLI Server: t.php

<?php header(‘Content-Type: text/html;charset=UTF-8‘); ?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>PHP测试</title>
    </head>
    <body>
	<?php echo date(‘Y-m-d H:i:s‘); ?>
    </body>
</html>

taskset -pc 1 `pgrep java` 将Java进程绑定到CPU1

taskset -p `pgrep java` 查看绑定后的CPU使用情况

taskset -c 1 php -S 127.0.0.1:8081 -t /png/www/ 将PHP进程绑定到CPU1并启动

taskset -p `pgrep php` 查看绑定后的CPU使用情况

先热一下身:

curl -I http://127.0.0.1:8080/t.jsp

curl -I http://127.0.0.1:8081/t.php

将siege绑定到CPU0,并发100,持续10秒,压测Java Tomcat:

taskset -c 0 siege -c100 -t10S http://127.0.0.1:8080/t.jsp

Java Tomcat 压测时Java进程的CPU使用率(%CPU):

pidstat -p `pidof java` 1

Java Tomcat 压测时系统的CPU空闲率(%idle):

sar 1

将siege绑定到CPU0,并发100,持续10秒,压测PHP CLI Server:

taskset -c 0 siege -c100 -t10S http://127.0.0.1:8081/t.php

PHP CLI Server 压测时PHP进程的CPU使用率(%CPU):

pidstat -p `pidof php` 1

PHP CLI Server 压测时系统的CPU空闲率(%idle):

sar 1

Java Tomcat vs PHP CLI Server 测试数据对比:

Java Tomcat PHP CLI Server
测试前内存占用(MB) 93.4 20.0
测试后内存占用(MB) 185.2 20.5
进程CPU使用率(%CPU,越小越好) 约300% 约95%
系统CPU空闲值(%idle,越大越好) 约7% 约46%
每秒处理请求数(Transaction rate,越大越好) 5376 6878

说明:

i5-3230M双核四线程,%CPU最大值可达到400%.

PHP从5.4.0开始内建了一个Web Server,方便PHPer测试和开发,Linux上是一个单线程应用,所以PHP进程的CPU使用率始终在100%以下.

而Tomcat是一个多线程Java应用,CPU耗得非常厉害,高峰时甚至超高330%!

PHP测试后内存仅仅涨了0.5MB,而Java进程内存涨了1倍,内存波动非常大,达到180多MB,是PHP内存占用的9倍还多!

PHP CLI Server的每秒处理请求数要比Java Tomcat多了
1500,而内存和CPU占用却比Java Tomcat小得多,是Java太低能了呢,还是PHP非常快呢?

时间: 2025-01-23 04:16:28

Java Tomcat vs PHP CLI Server 性能对比的相关文章

2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不得不用神奇的斐波那契算法.可能是比较常用或好玩吧. 好了,talk is cheap, show me your code!  打开Mac,点开Clion开始Coding吧! 1.怎么第一是Go呢,因为我个人最近正在用,感觉很不错 package main import "fmt" fun

Tomcat 8(十)HTTP/AJP Connector、Bio/Nio/Apr性能对比

Tomcat 8(七)解读Bootstrap介绍过,Connector初始化/启动的时候,将初始化/启动内部的ProtocolHandler.其实ProtocolHandler只是个接口 ProtocolHandler的UML图(以下这些类在org.apache.coyote包下) 创建Connector对象时,Connector的构造函数内会根据server.xml的Connector标签的配置创建ProtocolHandler(默为Http11NioProtocol) public Conn

Tomcat 7优化前及优化后的性能对比(转载)

一.运行环境 CPU: Intel(R) Pentium(R) [email protected]  : 内存:4G,装的是32位win7,只认出3G,没有花时间去整ramdisk之类的东西: 操作系统:win7 32位: JDK:1.7.0_55 Tomcat:7.0.53 大家不要笑,公司电脑,就给配这样的,慢的要死,悲剧! 下面所有测试都是基于1000个请求做的,且都是访问Tomcat默认的ROOT首页 二.未调优前 并发用户数从10-1000挨个测试,测试结果如下: 从上面的测试结果来看

[java]序列化框架性能对比(kryo、hessian、java、protostuff)

序列化框架性能对比(kryo.hessian.java.protostuff) 简介:   优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Protostuff 速度快,基于protobuf 需静态编译 Protostuff-Runtime 无需静态编译,但序列化前需预先传入schema 不支持无默认构造函数的类,反序列化时需用户自己初始化序列化后的对象,其只负责将该对象进行赋值 Java 使用方便,可序列化所有类 速度慢,占空间      

Java常用消息队列原理介绍及性能对比

消息队列使用场景 为什么会需要消息队列(MQ)? 解耦  在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一接口.这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 冗余  有些情况下,处理数据的过程会失败.除非数据被持久化,否则将造成丢失.消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的"插入-获取-删除"范式中,在把一

开发语言性能对比,C++、Java、Python、LUA、TCC

一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修改script.c,运行TccTest1.exe即可看到修改效果,无需编译!!! 链接:http://pan.baidu.com/s/1kUVGGwJ 密码:mgpx C++(VS2017) java8.2 Python2.7-3.5.2 aardio(LUA) TCC

2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]

2017年的golang.python.php.c++.c.java.Nodejs性能对比[续] 最近忙,这个话题放了几天,今天来个续集.   上篇传送门: 2017年的golang.python.php.c++.c.java.Nodejs性能对比(golang python php c++ java Nodejs Performance)   好了,上回的某些事有些人有异议,今天也回应下. 1.有人说python性能没那么Low? 这个我用pypy 2.7确认了下,确实没那么差, 如果用num

java数据库连接池性能对比

这个测试的目的是验证当前常用数据库连接池的性能. testcase Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.preparedStatement("select 1"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { } rs.close(); stmt.close(); conn.close(); test c

java io读取性能对比

背景 从最早bio的只支持阻塞的bio(同步阻塞) 到默认阻塞支持非阻塞nio(同步非阻塞+同步阻塞)(此时加入mmap类) 再到aio(异步非阻塞) 虽然这些api改变了调用模式,但真正执行效率上是否也会有所不同,对此进行了此次java io的性能测试 首先从github上找到了2个项目,然后自己也实现了一个性能对比的实现,以便熟悉各种api 项目1: https://github.com/stateIs0/io.benchmark https://www.jianshu.com/u/4342