laravel 中使用 nodejs + socket.io + redis 构建即时应用
2018-07-23 tech laravel nodejs redis 1 mins 1 图 230 字
目前已经在后台运行通过,
主要参考以下四篇文章,更详细的流程今后再总结。
目前已经在后台运行通过,
主要参考以下四篇文章,更详细的流程今后再总结。
最近个人网站的流量开始多了起来,以前写的代码比较粗放,目前同时在线人数不足30人,就有一些吃力了,1c的机器负载常年为1.5~2。优化有两个方向,一个是数据库优化,查找费时的语句,以此为基础进行优化,同时还可以做分库等高级方式;二是使用 redis 等内存数据库,将常用数据全部放到缓存中,加快系统速度。
目前只做了最基础的数据库优化,便将负载降到了0.2。已经满足了当前的需求了。这篇文章记录下整个过程。
在配置文件 postgresql.conf 简单设置以下参数,当然还有错误级别等要设置。
vi /etc/postgresql/9.4/main/postgresql.conf
# 以log_开头的配置都可以关注一下,主要是下面几个要配置好
logging_collector = on
log_destination = 'stderr'
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_duration_statement = 1000
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement: 设置跟踪的语句类型,有4种类型:none(默认), ddl, mod, all。跟踪所有语句时可设置为 “all”。
log_min_duration_statement: 跟踪慢查询语句,单位为毫秒。如设置 5000,表示日志将记录执行5秒以上的SQL语句。
当 log_statement=all 和 log_min_duration_statement 不能同时开启,只设置一个即可。
一个临时表一样的数据表,应该定期删除数据。当时发现一个数据表存有上百万条数据,而这张表只是临时表,1小时后便没有了用处。这种表应当在代码逻辑中及时删除。
对于常用的数据,则可以考虑将其放入内存中,减少数据库读取。这部分内容未来再开新文章记录。
对于一些 Where 的语句,注意 where 使用到的项,出现次数多的,将他们加入索引。
目前通过以上三个步骤,基本解决了我小网站的负载问题。
除此外,还可以将数据表按年月日归档、专门建立统计表等方式,进一步优化。目前还不紧急,待未来再实践。
项目地址:jkaving / intellij-colors-solarized
这是一个 IDE 颜色配置的的方案。一直以来都是用浅色的,今天感觉眼睛又些累,遂选了这一款主题。
File | Import Settings...
并指定intellij-colors-solarized
目录或settings.jar
文件。单击OK
出现的对话框。Preferences | Editor | Colors & Fonts
并选择一个新的颜色主题。复制Solarized Dark.icls
并Solarized Light.icls
到 IntelliJ IDEA 首选项颜色的目录。可能需要创建colors目录。
它通常在这些地方:
Mac OS X.
~/Library/Preferences/IntelliJIdeaXX/colors
(IntelliJ IDEA终极版),~/Library/Preferences/IdeaICXX/colors
(IntelliJ IDEA社区版),~/Library/Preferences/WebIDE70/colors
(PHPStorm 7.0),~/Library/Preferences/WebIDE80/colors
(PHPStorm 8.0),~/Library/Preferences/WebStorm8/colors
(WebStorm 8.0)。Linux
~/.<PRODUCT><VERSION>/colors
通用路径,~/.IdeaICXX/config/colors
(IntelliJ IDEA),~/.PyCharmXX/colors
(PyCharm)。Win
%USERPROFILE%\.IdeaICXX\config\colors
(IntelliJ IDEA社区版),%USERPROFILE%\.PyCharm40\config\colors
(PyCharm 4.5社区版)。重启IntelliJ IDEA
转到Preferences | Editor | Colors & Fonts
并选择一个新的颜色主题。
这篇文章记录如何在win下挂载 Linux nfs 硬盘。
modprobe nfs
modprobe nfsd
apt-get -y install nfs-common
cat <<EOF > /etc/exports
/nfs *(rw,sync,no_subtree_check,no_root_squash)
EOF
exportfs -av
mount \\10.8.11.192\nfs x:\
使用 mount 命令,默认挂载的文件用户 uid=-2,gid=-2,将其修改为root用户0和用户组0:
打开注册表:
事实上我目前还是没有解决这个问题,参考了GitHub的这个issue Docker for windows is not mapping ports to localhost 中352193804楼的做法,直接使用了容器的ip + port的方式,绕过了遇到的问题。
有搜索过网上相关的问题——《解决Windows下无法对docker容器进行端口映射的问题》 ,然而我在运行这项命令 docker-machine ip default
时,并没有显示预期内容,这个命令应当是老的 Windows docker 工具创建虚拟机时使用的。
另,win下的 docker 其实有两种模式,一种是早期的,在本地起虚拟机(Virtualbox),虚拟机中运行docker这种方式——Docker Toolbox。 另外一种则是新的 Docker for Windows。
Docker for Windows 依赖于 Hyper-V,需要在 控制面板->程序与功能->windows功能 中打开。
具体来收:
控制面板/程序与功能
启用或关闭Windows功能
启动 telnet
可以正常使用了