data文件夹无法写入(框架配置_of.dataDir指向的文件夹)
可以尝试 "chmod -R 777 data", "chown -R 用户 data", "chgrp -R 用户组 data" 来解决问题
如何看到mysql死锁日志
mysql 帐号分配 ROCESS 权限后, 框架会抓取死锁日志
为什么通过 curl 或 of_base_com_net::request 访问网络慢
在网络正常的情况可能是IP6的问题, 在 /etc/resolv.conf 加上 options single-request-reopen 参数
如何禁止浏览器的内存(from memory cache)与磁盘(rom disk cache)缓存
apache 配置方法
#开启 mod_headers 模块 LoadModule headers_module modules/mod_headers.so #禁止css与js文件浏览器缓存 <FilesMatch "\.(css|js)(.*)$"> header set Cache-Control "max-age=0, no-cache" </FilesMatch>Nginx 配置方法
server { #其它配置 ... #禁止css与js文件浏览器缓存 location ~* \.(css|js)(.*)$ { #其它配置 root ... add_header Cache-Control "max-age=0, no-cache"; } }
如何解决异步起不来或很快停止的问题
一, 生产环境建议: 配置php环境变量关闭安全模式且启用popen方法, 注意版本号对应
of_base_com_net::isCli(); //返回 true 则设置成功二, Apache开发环境建议: httpd.conf配置足够长的超时时间
FcgidIOTimeout 864000 FcgidBusyTimeout 864000
如何排查异步代码卡死问题
一, 设置"脚本超时"排查代码死循环, 超时后错误日志中会提示代码位置
set_time_limit(60);二, 为网络请求函数设置"响应超时"排查网络异常, "脚本超时"对"响应超时"无效
//不包含CURL的响应超时 ini_set('default_socket_timeout', 60); //CURL 响应超时(60s) curl_setopt($ch, CURLOPT_TIMEOUT, 60); //file_get_contents 响应超时(60s) file_get_contents(URL, false, stream_context_create(array( 'http' => array( 'timeout' => 60 ) ))); //推荐 of_base_com_net::request 默认default_socket_timeout超时设置 of_base_com_net::request(URL);三, 上述无效时, 添加"调试代码", 记录每个节点位置, 再分析排查
linux 查看异步进程 printf '%b\n\n' $(ps aux --sort -rss | grep \\.php | sed 's/ /%20/g;s/%/\\x/g')
如何提升系统性能
- 配置多个系统副本, OF_DATA目录共享, 配置 "_of.nodeName" 区分不同副本
- 将所有 kv 配置成非files模式, 如redis分布式模式, 注意 default 和 _ofSelf 有默认配置
- 切换数据锁, 如切到swooleRedis 配置_of.com.data.lock 挂载多个磁盘
- 使用分布式数据库, 如TIDB
- 消息队列使用非MySQL方式, 如redis方式
- 减少不必要 SESSION 生成, 如serv层的API, 可以通过 _of.session.autoStart 配置
- SESSION切到非files模式, 如kv(依赖数据锁)或db(不依赖磁盘), 最好用cookie绑定将files分布式独立存储
- 动态计划任务切换到db模式, 配置_of.com.timer.task
40000 lock single local: 0.4s lock single minio-goofys: 20.91s lock single cephfs: 17.74s lock single nfs-memory: 25.87s lock single nfs-disk: 22.35s lock single redis-RDB+AOF: 16.44s lock single redis-none: 16.29s 40000 lock rand local: 5.09s lock rand minio-goofys: 345.47s lock rand cephfs: 37.57s lock rand nfs-memory: 167.46s lock rand nfs-disk: 27.59s lock rand redis-RDB+AOF: 40.48s lock rand redis-none: 8.15s 10000 write single local: 0.79s write single minio-goofys: 93.62s write single cephfs: 46.25s write single nfs-memory: 27.63s write single nfs-disk: 8.85s 100000 read single local: 0.87s read single minio-goofys: 38.35s read single cephfs: 1.16s read single nfs-memory: 3.27s read single nfs-disk: 2.89s 40000 delete batch local: 0.43s delete batch minio-goofys: 60.02s delete batch cephfs: 25.51s delete batch nfs-memory: 14.73s delete batch nfs-disk: 13.4s