gpt4 book ai didi

mysql - 如何使用 Django/Apache/mod_wsgi/MySQL 在 EC2 上最大化性能?

转载 作者:行者123 更新时间:2023-11-29 00:42:17 24 4
gpt4 key购买 nike

我在使用 Ubuntu 12.04 LTS 的 EC2 m1.medium 实例(3.75 Gb 内存、2 个 EC2 计算单元、410 Gb 实例存储、中等性能)上运行 Django 支持的站点。我的 EC2 实例上的 MySQL 设置如下(来自/etc/mysql/my.cnf):

key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
query_cache_limit = 1M
query_cache_size = 16M

来自/etc/apache2/sites-available/mysite.com 的 mod_wsgi 设置:

WSGIDaemonProcess mysite.com user=me group=me processes=7 threads=20 maximum-requests=1000000

根据我的配置,我可以设置的最大进程/线程/请求数是多少?我尝试了一些值,但它们导致 MySQL 崩溃。可以将 MySQL key_buffer 设置为 0.75Gb(EC2 实例上 3.75Gb RAM 的 20%)吗?提前致谢!

最佳答案

您所有的 MySQL 变量似乎都很低。首先最重要的是:你使用的是什么存储引擎? Key_buffer_size 只对 MyISAM 存储引擎有效。

如果您使用的是 MyISAM,请执行以下操作:

> select sum(index_length) / 1024 / 1024 as index_size_MB from information_schema.Tables where Table_schema = 'knagy' and Engine = 'MyISAM';
+---------------+
| index_size_MB |
+---------------+
| 0.16992188 |
+---------------+

这将显示您的索引有多大。如果您有足够的 RAM,您应该将此值大致设置为 key_buffer_size。但不要将其增加到超过可用 RAM 的 50-60%。

如果您使用的是 InnoDB,请尝试将 innodb_buffer_pool 设置为带索引的数据集的大小:

> select sum(index_length + data_length) / 1024 / 1024 as innodb_MB from information_schema.Tables where Table_schema = 'knagy' and Engine = 'InnoDB';
+--------------+
| innodb_MB |
+--------------+
| 403.04687500 |
+--------------+

您可以将其设置为可用 RAM 的 80%,当然要考虑其他应用程序的内存使用情况。

只有进行其中一项更改,您才能获得显着的性能提升。

如果您看到 threads_created 状态变量快速增加,您也可以增加 thread_cache_size 大约 30-50 或更多。

当然还有很多进一步的优化,但这将使您达到可能的最大性能的 80-90%。

关于mysql - 如何使用 Django/Apache/mod_wsgi/MySQL 在 EC2 上最大化性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com