我们目前的站点完全是在mvc架构的cakePHP框架中开发的。如果我们注意到超过 19-20 个用户同时查看该网站,它就会开始爬行并开始超时。
这可能是 MySQL 的性能问题吗?可能与 MVC 有关——因为该站点严重依赖与 SQL 数据库的通信。如果是这样,增加整体 RAM 是否有助于解决问题?
谢谢。
配置:
open-files-limit = 20000
#sql-mode = TRADITIONAL
#event-scheduler = 1
### Cache
thread-cache-size = 16
table-open-cache = 2048
table-definition-cache = 512
query-cache-size = 32M
query-cache-limit = 1M
### Per-thread Buffers
sort-buffer-size = 1M
read-buffer-size = 1M
read-rnd-buffer-size = 8M
join-buffer-size = 1M
### Temp Tables
tmp-table-size = 64M
max-heap-table-size = 64M
### Networking
back-log = 100
max-connections = 300
max-connect-errors = 10000
max-allowed-packet = 16M
interactive-timeout = 600
wait-timeout = 60
net_read_timeout = 30
net_write_timeout = 30
# This value is the size of the listen queue for incoming TCP/IP connections.
back_log = 128
#### Storage Engines
#default-storage-engine = InnoDB
## Makes sure MySQL does not start if InnoDB fails to start. This helps
## prevent ugly silent failures.
innodb = FORCE
### MyISAM
key-buffer-size = 64M
myisam-sort-buffer-size = 128M
#InnoDB
innodb-buffer-pool-size = 16M
innodb-log-buffer-size = 4M
innodb-log-files-in-group = 2
server-id = 1
[mysqld-safe]
log-error = /var/log/mysqld.log
[mysqldump]
max-allowed-packet = 16M
我们将蛋糕用于一些内部应用程序。是的,有时确实如此,请原谅我的法语,糟透了。这与 mysql 本身无关。一旦您开始定义比基本模型更多的东西并沿着“有很多”/“有很多属于很多”关系走下去,它生成的底层查询可能会低于标准。
你有包含多列主键的表吗?忘掉它。
坦率地说,有时你需要打破你的框架应该保护你的模式并更直接地编写你的 sql :-\
话虽这么说,与与您的数据库交互的任何其他事物一样,您需要确保拥有适当的索引和适当的缓冲池/键缓冲区。