PHP :: 也许是最好的Web开发语言,但短连接问题真的很头疼,连接池很重要。

PHP的确是当下最流行的Web开发语言,尤其是Facebook用它构建了其社交网站后。PHP从开发角度来讲的确是非常方便,但其多进程机制却非常不利于全局资源(比如数据库连接、缓存连接等)的共享和管理。即使是在同一个应用服务器里,每次请求、每个页面还是会被不同的PHP进程来处理,导致资源很难共享。当PHP页面需要访问数据库或缓存里的数据时,常常需要临时创建连接、获取信息、到最后关闭连接。 如果你的网站每秒钟有成千上万次的访问量,并且页面是动态的,意味着每秒钟会有成千上万次的数据库新连接的建立和断开,给数据库和缓存造成极大的压力。

php_without_connection_pool

OneProxy是基于MySQL协议的数据访问中间件,而OneCache是基于Redis协议的缓存访问中间件,他们可以保持自身到后端MySQL数据库或缓存的长连接,并维护一个共享的连接池,以避免过多的连接创建与销毁操作,不担能减轻数据库的压力,还可以提升页面响应时间,结合OneSQL在高并发下可以有更好的表现。 平民软件也有基于PostgreSQL协议的OneProxy版本, 基本上不需要担心OneProxy和OneCache中间件的性能,单个实例就可以提供接近50万QPS的转发能力,并且还可以布署多个实便,组建高可用的负载均衡集群。在PHP应用和MySQL/Redis之间透明地布署OneProxy/OneCache就可以保护数据库或缓存不受短连接的干扰了。

php_with_connection_pool

除连接池外,布署OneProxy/OneCache还有一些其他的优势:

  1. OneProxy接管了客户端登录时的密码验证工作,单纯的连接不再需要访问后端的数据库,连接风暴也不会对后端生产生压力,你可以用更快的速度来发布或重起应用。
  2. OneProxy/OneCache可以控制后端最大的连接数以确保MySQL/PostgreSQL/Redis的性能。
  3. OneProxy允许应用使用不同的密码来登录,即使黑客从应用中得到密码,也不能直接连接数据库;并可以启用白名单功能来防止SQL注入攻击
  4. OneProxy/OneCache可以实时统计性能数据,以让你更好地了解应用运行情况。
  5. OneProxy/OneCache在后端节点故障时可以自动做故障切换,让运维变得极其省心,并可以作为后端多个节点的负载均衡设备,以提升系统处理能力。

上线OneProxy/OneCache的过程可以一步一步进行灰度发布,以合理避免可能存在的风险。

  1. 可以访问此网站以便更加了解OneProxy和OneCache,下载并在测试机上进行测试。
  2. 并且要以在QA测试环境下进行布署,并切换部份流量到OneProxy或OneCache。
  3. 在测试环境进行一定时间的观察,看看一切是否正常。
  4. 可以在预发布环境(Sandbox)进行布署,并切换应用服务器进行验证。
  5. 在生产环境进行布署,并切换少量应用服务器进行验证。
  6. 在生产环境进行长期观察,确保一切正党后再采取下一步的行动。
  7. 在生产环境全面启用OneProxy/OneCache中间件,彻底提升PHP网站的处理能力。

如果遇到任何问题,你只需要更改一下应用中的后商连接信息,即可以跳过OneProxy / OneCache回到原始状态,避免问题扩大化。也可以随时求助我们申请商业技术支持,用最快的速度将问题解决掉。