分类存档: LAMP

写在10月17日

终于解决了load居高不下的问题

服务器内部依然要非常注意文件读取的大小问题,即使只是在内存内部,依然会有很大的开销。

误打误撞优化了很多其他的,终于出现了跳崖式的质变,一丝欣慰啊~

路依旧漫漫,任重而道远。

用NodeJs + MongoDB搭建web服务 (一)

最近的一个项目里试用了NodeJs+MongoDB的组合,已经搭建完成,做下简要记录。

首先安装Mongo,各个平台都有做好的文件包可以直接使用,很简单,前面详细写了mongo的一些设置,后面等开始部署分片之后再专门叙述。

node则需要编译安装,安装之后加装npm,便可以方便的获取各种包。npm下来的包有两种:全局运行的工具包如coffee-script,也有直接下载到当前文件目录的模块如mongoskin。

////插一嘴coffee-script:确实可以省一些代码,不过开始时候最好不要用,反倒容易影响了对一些细节的理解,建议对js非常熟悉了之后可以再考虑更换。

语法方面扫了不少的雷,由于想通顺一下底层流程没有选用express,下次则开始尝试使用框架。

配置方面值得一提,由于还需要运行nginx下的其他业务,没法使用node自己做反向代理,会造成端口冲突。最后选用的办法是使用指定cpu内核运行多个node事例,再用nginx做反向代理。node和nginx进程制定cpu的方法随意搜有很多,也很简单。有个小改进是网上说建立多个index.js指定不同端口,其实完全没必要,node运行时代码内部是可以取到外部附带参数的,结合cpu绑定将代码写在shell里可以很方便的对多个事例进行重启操作。

一个漏掉的点是测试,node貌似也是可以运行自动测试的,不过还没尝试。//TODO

下一步就是node 和 php的性能比拼了,敬请期待。

Linux软件的使用顺序问题

前阵子被某诡异错误纠缠一天,解决了才发现如此简单,又一个被表象蒙蔽的实例。

nginx+php,直接访问浏览器功能正常,页面上通过接口调用后台shell运行php内容则报错找不到数据库,直接后台用php运行shell文件则没问题,修改为nginx用户运行也没问题,运行php -m查看模块加载正常。

开始怀疑是数据库的问题,因为刚出现过因为数据库版本对应不上而编译后无法使用的“段错误”问题,于是又重新编译等等花费不少时间。

中间其他的各种尝试和搜索不说了,最后取得进展的是在浏览器调用shell并输出phpinfo的时候发现参数内容和编译安装的版本对不上,终于发现是原来使用默认配置安装的一份php在作祟(由于版本号一致,一直没有看出来),之后删除除了制定路径的php之外的所有php相关文件,问题解决。

问题原因就是系统的环境设置和用户的环境设置的优先级并不一致,如果是用户的环境则优先使用/usr/bin下的软链接掉用目标php,如果是系统环境则会优先其他路径导致默认安装的php优先权更高,删除之后则继续寻找到/usr/bin下的php。