php中文网

MySQL 调优如何提高 Laravel 性能

php中文网

mysql配置调优是数据库专业人员和管理员实施的数据库管理的重要组成部分。它的目的是配置数据库以适应其硬件和工作负载。但在数据库管理领域之外,mysql 配置调优的用处很大程度上被忽视了。

我们假设 mysql 调优可以显着影响 web 应用程序的性能。如果我们能够展示mysql调优的价值,我们相信企业和组织可能会热衷于更大规模地结合这种实践。

如何提高 laravel 应用程序性能

通过调优提高应用程序性能最好通过解决以下领域的综合方法来实现:

  • 服务器资源 – cpu、内存、存储
  • 软件配置 – linux、nginx、php…
  • 数据库管理系统(dbms)配置 – mysql、postgresql
  • 优化数据库方案并更改索引
  • 优化应用程序 - 代码、查询、架构......

许多经验丰富的开发人员并不将数据库性能调优视为提高应用程序性能的机会,因为他们对此领域知之甚少。他们花费了大量时间来优化代码库,但已经达到了这样的地步:不再为投入的时间和精力带来有价值的结果。我们对 mysql 调优如何对流行开源 web 应用程序的性能产生积极影响的研究旨在向开发人员展示这一事实。

测试方法

我们对 laravel aimeos 的测试程序让我们可以使用种子数据来比较配置前后应用程序的性能。通过首先使用默认配置运行测试,我们获得了有价值的控制结果来与调整后的配置进行比较。

我们使用以下流程来准备和测试每个应用程序:

  1. 部署 laravel aimeos。
  2. 带有数据的种子数据库。
  3. 为 jmeter 准备测试。
  4. 运行测试 10 分钟 – 使用 blazemeter 性能测试平台进行 jmeter 测试。
  5. 调整 mariadb 配置 – 默认配置测试后,我们的设置保持不变,但 mariadb 针对工作负载、服务器资源和数据库大小进行了调整。
  6. 重新运行测试 – 使用 blazemeter 重复 jmeter 测试以调整配置。

测试期间我们在 github 上发布了 jmeter 测试、mysql 状态和 mysql 变量。

我们查看了哪些指标?

我们在本研究中查看的指标是:

  1. 响应时间(延迟)是发送请求并在服务器端处理请求到客户端收到第一个字节之间的时间。这是让您深入了解服务器性能的重要指标。
  2. 每秒查询数 是衡量数据库服务器每秒执行多少查询的指标。
  3. cpu 利用率.

我们收集了cpu 利用率每秒查询数 指标来比较工作负载。

laravel 艾梅奥斯

aimeos laravel 是一个流行的电子商务 web 应用程序框架,用于创建在线商店、市场和 b2b 应用程序。借助 aimeos,用户可以为 laravel 创建 api 优先的电子商务商店,该商店可以扩展以支持超过 10 亿种商品。它有 30 多种语言版本,安装量超过 300,000 次。

测试设置

为了测试 aimeos,我们以 10 个用户开始测试,但由于默认配置无法完成测试,我们不得不减少用户数量。

我们在数据库中植入了 500 mb 数据。
我们的测试时间是10分钟。

我们使用:

  • 安装了 debian 11 作为操作系统的 aws ec2 实例 c5.xlarge,
  • apache 作为网络服务器,
  • mariadb 10.5 设置为默认配置,数据库大小 500 mb。

mysql配置

aimeos laravel 使用的配置如下:

laravel aimeos 500mb 的调整配置

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

测试结果

aimeos laravel 测试结果展示了默认配置和调整配置之间的显着性能改进。

mysql 的优化导致平均服务器响应时间显着改善,从 1.4 秒减少到 800 毫秒以下。

响应时间(延迟)下降了 42%,平均cpu 利用率下降了 86%,而每秒查询数增加了令人难以置信的 291%,从每秒 12 个查询增加到 35 个查询。

结果图表如下:

响应时间(毫秒),aimeos 调整 mysql 配置与默认值
cpu 利用率 (%),aimeos 调整 mysql 配置与默认值
每秒查询数,aimeos 调整 mysql 配置与默认值

社区贡献者

我们与 initlab 公司的 laravel 开发者 gevorg mkrtchyan 和 sergey sinitsa 合作调查了这一问题,非常感谢他们的专业知识。

sergey 部署了 aimeos,gevorg 准备了用于播种数据库的代码。

结论

我们使用 aimeos laravel 的测试程序在配置数据库服务器配置后,在

响应时间(延迟)cpu 利用率每秒查询数方面显示出显着的改进。

响应时间(延迟)下降了 42%,而cpu 利用率下降了 86%。 aimeos laravel 500mb 中的每秒查询次数 增加了 291%。

总之,mysql 调优是数据库管理的一个重要方面,可以对 laravel 应用程序的性能产生重大影响。性能不佳的 web 应用程序可能会导致页面加载时间增加、请求处理缓慢以及用户体验不佳,从而对 seo 和销售产生负面影响。通过使用 mysql 调优优化 web 应用程序的性能,企业和组织可以提高销售额、浏览量、转化率和 seo 排名。

通过这项研究,我们希望展示 mysql 调优作为提高 laravel 应用程序性能的一种手段的价值,并鼓励 laravel 开发人员在优化应用程序性能时考虑这种做法。

使用 releem 等工具,可以自动配置数据库以获得最佳性能,减轻软件开发团队的负担。

以上就是MySQL 调优如何提高 Laravel 性能的详细内容,更多请关注php中文网其它相关文章!