`
testcs_dn
  • 浏览: 113930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

PHP通过JAVA桥使用连接池提高性能

 
阅读更多

原文:http://hi.baidu.com/zhangsilly/item/48ee731080ac36cc39cb30ab

我一直在寻求一个连接池解决方案,特别是在主要使用Oracle之后

注意:以下观点仅来自于小量的benchmark

测试环境:
1G RAM
Intel Pentium D 2.8G(双核)
OS: Windows XP (Linux机器效率应该高一些,因为Linux可以通过java.so扩展连接Bridge,测试采用Pure PHP的代码连接的Bridge)
PHP:5.29
MySQL5
Oracle 10g
PHP JavaBridge 5.411
Tomcat 6.018
Java SDK 1.60 update 11

自从使用Java桥之后,我一直想为PHP找一个连接池来解决现在遇到的问题(现在很多东西运行在Oracle上,PHP搭配Oracle真的比想象得要慢好多)。很容易,通过php java桥使用连接池非常简单(废话,PHP通过socket和java打交道,将资源交给java管理就可以了),测试结果如下:

对MySQL:
PHP直连MySQL:1100 ~ 1300 次请求/秒
PHP通过Java桥、DBCP连接MySQL:250 ~ 300 次请求/秒

对Oracle:
PHP直连:30 ~ 33 次请求/秒
PHP通过Java桥、DBCP连接Oracle:120 ~ 135 次请求/秒

上面的测试,发现如果使用MySQL的话,还真是用不着数据库连接池(这种通过Bridge的中间环节过多,还设计到数据的包装、解包操作)。如果使用Oracle的话,数据库连接池就大有可为了(即使增加了本地的请求,数据包装、解包等操作,仍然还是值得的),使用连接池之后,性能真的大幅上升(并未采用 prepareStatement 软解析预编译语句、SQL语句全部 hard code, 没有开启 poolPreparedStatements 缓冲)。

数据库连接池直接采用Tomcat自带的DBCP完成,配置默认,增加removeAbandoned=true validationQuery="select 1 from dual"。为保证公平性,直连、Bridge均执行想听那个的SQL并完成绝对相同的流程。


分享到:
评论

相关推荐

    redis连接池

    Redis连接池是数据库连接管理的一种策略,主要用于优化数据库操作,特别是在高并发环境下,它可以有效地减少创建和销毁连接的开销,提高系统性能。Ecmall是一个开源的电子商务平台,其在处理大量用户请求时,利用...

    JAVA DB连接池

    ### JAVA DB连接池 ...同时,还探讨了如何通过配置Tomcat服务器来使用数据库连接池技术,从而提高应用程序的性能和稳定性。通过合理配置和管理数据库连接资源,可以显著提升Java应用程序的效率和用户体验。

    这是一个可以自定义参数的使用Ssh2连接远程服务器的连接池

    通过理解和利用这个连接池,开发者可以更有效地管理和操作远程服务器,提升系统的稳定性和性能。在深入研究ssh-2-server-connection-pool-master这个项目的源代码和文档后,开发者将能够更好地掌握其工作原理,并将...

    JavaBridge.jar,php-servlet.jar

    这样,开发者可以利用 Java 的高性能和丰富库,例如数据库连接池、加密算法等,来增强 PHP 应用的性能和功能。 - **使用场景**:比如在 PHP 应用中需要使用复杂的计算、大数据处理或者安全加密时,可以通过 Java...

    JSP数据库连接池的研究与实现(源代码+论文).zip

    在JSP环境中,通过使用连接池,开发者可以高效地管理多个用户请求,避免了频繁的数据库连接创建和释放,从而提高了系统性能和响应速度。本文将详述这一技术的原理及其在JSP中的实现方式。 首先,我们需要了解JSP...

    JavaBridge.jar,php-script.jar,php-servlet.jar,script-api.jar

    JavaBridge使得PHP能够直接调用Java类库,扩展了PHP的功能,比如访问Java的数据库连接池、企业级服务等。它通过Java Native Interface (JNI) 实现,使PHP代码能够调用Java的本地方法。 2. **php-script.jar**: 这个...

    基于java的PHPJava Bridge.zip

    3. **利用Java库**:如果项目需要使用特定的Java库,例如数据库连接池、加密算法库等,可以通过PHPJava Bridge来实现。 4. **安全性增强**:Java的安全模型可以提供更高级别的安全控制,通过JavaBridge,PHP应用...

    php-java-bridge_6.2.1_documentation

    在实际项目中,PHP-Java Bridge常用于调用Java的库,如数据库连接池、复杂算法、图形处理等。通过提供具体的示例代码,读者可以更好地理解和应用这一技术。 总结,PHP-Java Bridge 6.2.1为PHP开发者提供了强大的...

    php连接代理 提供连接池 异步pdo redis 读写分离 负载均衡 日志打印等功能

    连接池是数据库管理的重要组成部分,它预先创建并维护一组数据库连接,当应用需要时可以从池中获取,使用完毕后归还而不是关闭,这样可以避免频繁创建和销毁连接的性能损失。在PHP中,如`PDO`或`mysqli`扩展虽然提供...

    java 连接数据库实现用户登录功能

    在Java编程中,连接数据库以实现...在实际项目中,还应该考虑错误处理、事务管理和数据库连接池等高级特性,以提高系统的稳定性和效率。在提供的`README.md`文件中,可能会有更多关于如何运行和设置该项目的详细说明。

    Asp实现的数据库连接池功能函数分享

    虽然一般的企业网站可能不需要使用数据库连接池技术,但正确的实现和使用可以显著提高大型应用的性能和扩展性。尽管ASP不常用于数据库连接池的实现,但文中给出的示例代码为需要使用ASP环境的企业提供了一种可行的...

    java开源包4

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    基于swoole的mysql协程连接池,简单封装 实现多个协程间共用同一个协程客户端

    本文将深入探讨基于Swoole的MySQL协程连接池的实现,以及如何通过简单封装实现多个协程间共享同一个协程客户端,从而提高系统效率。 首先,Swoole是一个高性能的PHP扩展,它提供了异步、非阻塞的网络通信引擎,使得...

    thrift服务集成spring及连接池

    【Thrift服务集成Spring及连接池】的知识点详解 Thrift是一个开源的跨语言...通过与Spring的整合和连接池的使用,可以进一步提升系统的稳定性和效率。在设计和实现大规模分布式系统时,Thrift是一个值得考虑的工具。

    java开源包8

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包6

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包9

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包101

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包5

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    memCache源码java客户端

    4. **ConnectionPool**: 连接池管理连接,提高连接复用,减少创建和销毁连接的开销。 ### 三、连接与配置 在使用spymemcached时,首先需要创建`MemcachedClient`实例,通常会指定服务器地址和端口,以及连接池参数...

Global site tag (gtag.js) - Google Analytics