性能考虑

DreamFactory是一个基于php的应用程序,我们在每一个机会努力优化代码,性能主要是由决策在基础设施水平。幸运的是,这些决定与其说是由预算通过声音技术和主机的选择。虽然DreamFactory环境无疑会更加性能例如一个AWS t2。大比15美元数字海洋飞沫,可以大大降低两者之间的鸿沟,是小心正确配置和调优环境。在这一章我们将提供一些一般性的性能基准,然后提供指导如何确保DreamFactory实例运行在高峰容量。

性能基准测试

下表给出DreamFactory的平均响应时间与托管平台在各种受欢迎的托管解决方案。在每种情况下承载环境修改的,而不是以任何方式优化。然而重要的是要注意所有运行PHP 7.2, NGINX, PHP-FPM。

环境 负载和API类型 平均响应时间
15美元数字海洋飞沫 10 MySQL API请求/秒(10记录) 2524毫秒
15美元数字海洋飞沫 启用了缓存的10 MySQL API请求/秒(10记录) 101 ms(提高96%)
15美元数字海洋飞沫 启用了缓存的10 MySQL API请求/秒(100条记录) 145毫秒
AWS t2.large 50 MySQL API请求/秒(100条记录) 83毫秒
AWS t2.large 启用了缓存的50 MySQL API请求/秒(100条记录) 72 ms(提高13.3%)
AWS t2.large 100 MySQL API请求/秒(100条记录) 85毫秒
AWS t2.large 100年启用了缓存的MySQL API请求/秒(100条记录) 73 ms(提高14.2%)
AWS t2.large 10 S3 API JPEG文件请求/秒 198毫秒
AWS t2.large 10 MySQL API请求/秒(1000条记录) 281毫秒
AWS t2.large 启用了缓存的10 MySQL API请求/秒(1000条记录) 264 ms(提高7.2%)

这些负载测试使用第三方负载测试服务Loader.io。

最明显的结论是,启用数据库缓存可以对性能有巨大影响的事件你运行DreamFactory低功率的服务器上。更强大的服务器环境的影响并不明显,不过都是一样的在AWS上启用缓存t2。大型生产平均上面列举的场景的性能提升了11.6%。那么你还能做些什么来提高性能?

优化DreamFactory的数据库api

确保DreamFactory-generated数据库api在高峰运行性能是通过确保正确配置数据库,已分配适当的硬件和网络资源,打开DreamFactory的数据库缓存功能。万博手机登录平台在这一节中我们将进一步讨论所有这些任务。

索引数据库

对数据库支持的api,没有更有效的任务可能需要比正常索引数据库。数据库索引是允许数据库引擎快速识别哪些行定义的匹配条件在哪里条款。请参考以下资源通用和特定于数据库的索引信息:万博手机登录平台

数据库API的缓存

启用数据库API的缓存每当实用,因为它无疑会提高性能。

DreamFactory实例可能是负载均衡,可以配置为共享系统数据库,缓存的细节,和其他信息需要在分布式环境中运行。以下是一些链接,可以帮助您配置一个负载均衡器与一些最常见的云提供商。

  1. 亚马逊网络服务
  2. 谷歌云
  3. 微软Azure
  4. IBM Cloud

DreamFactory使文件的默认缓存,但是您可能会选择配置的另一个支持缓存解决方案,如复述。请查看这些链接看到连接教程:

  1. YouTube——设置和使用复述
  2. 博客——缓存

添加复述,缓存

DreamFactory最大的优势是Laravel之上构建的,因此,您可以利用Laravel对共享缓存解决方案的支持,等等。这是伟大的,因为它意味着缓存解决方案进行了广泛的测试和证明在生产环境中。万博max手机网页登录

安装predis包你只需要导航到您的项目的根目录并执行这个命令:

美元需要predis / predis作曲家

接下来,打开你的.env文件,寻找这一节:

# CACHE_DRIVER选项:apc、数组、数据库文件,memcached,复述,CACHE_DRIVER =文件改变CACHE_DRIVER: CACHE_DRIVER =复述

接下来,向下滚动并取消删除这些行#,然后更新CACHE_HOST,CACHE_PORT,(可选)CACHE_PASSWORD参数匹配您的复述,环境:

#如果CACHE_DRIVER = memcached或复述,# # CACHE_PORT CACHE_HOST = = # CACHE_PASSWORD =

最后,向下滚动到下一节和取消CACHE_DATABASEREDIS_CLIENT:

#如果CACHE_DRIVER =复述,# CACHE_DATABASE = 2 #复述,客户机使用:predis或phpredis # REDIS_CLIENT = predis (PHP扩展)

你可以把CACHE_DATABASE设置为2。为REDIS_CLIENT你可以把它设置为predis如果你安装了predis / predis包(推荐)。默认情况下复述,数据库将在0,所以一定要选择不管数量是你设置CACHE_DATABASE等于。然后你可以看到填充。

负载平衡DreamFactory环境

您可以使用一个负载均衡器在多个服务器之间分配API请求。负载平衡器还可以执行健康检查和消除不健康的服务器自动从池中。大多数大型服务器架构在整个基础设施包括负载平衡器在几个点。你可以集群负载平衡器,以避免单点故障。DreamFactory是专门设计来处理负载平衡器和所有的各种调度算法。REST API请求可以发送到web服务器在任何时间和任何一个无状态的方式处理。

下图描绘了一个典型的负载均衡、高可用性环境。像许多基于http的应用程序,DreamFactory可以扩展使用三层架构:

  • 应用层:这些服务器运行一个或多个DreamFactory实例。
  • 缓存层:如果负载平衡DreamFactory跨多个服务器,您将需要使用一个高速缓存解决方案为分布式缓存管理如复述或Memcached。
  • 数据库层:在负载均衡环境DreamFactory系统数据库需要跨实例共享。您可以使用MySQL、PostgreSQL或Microsoft SQL Server。

编译与OPcache DreamFactory代码

你可以通过编译实现特别高的性能使用OPcache DreamFactory应用程序代码。以下

  1. PHP的OPcache文档
  2. 如何让你的Laravel应用飞吗

第三方资源万博手机登录平台

结论

这些只是一些小技巧旨在帮助您确保DreamFactory环境运行在峰容量!如果你有其他想法,请寄给在dreamfactory.com代码!

Baidu
map