2008的最后一天

作者 : admin 于 2008年12月31日, 22:35:54
2008
12-31

下午腐败了一场,幸好没喝多少,躲过一劫。
总结今年,收获不少,尤其加入朗玛,更是在项目经验上积累不少心得。
技术方面,自5月份加入朗玛,有了突飞猛进的发展,不仅在代码方面,linux系统长进不少,在程序架构和代码风格上也有了很大的提高。
细节:mysql优化,索引,搜索引擎基础,lucene,linux系统管理,apache优化设置,PHP优化,系统安全,权限,都有了一个不小的进步。前端方面,http优化,js编程,也有一定的提高。
其实学的挺杂,但心中终于有了一个目标,并且为了这个目标努力了,前进了,而且落实到代码字符上了。
2008是个不错的年景,有了很大的收获,2009要再接再厉。

传说中的千万数据量优化

作者 : admin 于 2008年12月30日, 22:10:51
2008
12-30

平时看别人招聘,动不动来个“有千万数据量优化经验”。我还的确没有这个经验,中小网站来个几万几十万的数据就了不得,一些涉及数据多的顶多也来个百万,因为超百万我就分表了,而且设计的时候尽量使用主键索引,避免使用模糊搜索和一些复杂的搜索。
基本百万数量级以下的简单应用,一般的服务器没什么问题,只要程序够不垃圾就行。
今天突然奇想,尝试下千万数据什么样子,花半个小时生成了一堆随机的数字,一千万整,当然还有其他的一些数据,主要测试从千万级的数据中捞少量数据是什么样子。
我用的MSSQL2005,使用存储过程生成数据,半个小时,Mysql没实验过。结果,从千万数据用where捞几万条数据,用单一的where条件,果然很慢,能达到20几秒。后仔细查看索引和语句,发现没有很好的索引供sql语句使用,根据where语句建立索引,速度提升到10秒左右。因为只是取出几个字段,后又想使用覆盖索引,加上那几个字段,速度大为提高。
经过跟踪测试,在覆盖索引的使用后,取数据已经达到了相当迅速,但大量的时间消耗在了数据库连接和数据的传输上。因为本系统必须操作大量数据,而拆分数据后又增加了创建数据库连接的成本,速度反而变慢。其实,只要php不超时,已经达到了可用的程度。
总结:索引这玩意真的不错,但设计数据表要尽量简单,简单不是指字段简单,而是使sql语句取数据简单,必要时中间要增加矢量的冗余数据,用空间换取时间。

2008
12-25

最近又跟P友讨论PHP的多进程问题,解决的方案,一般都是建立新的系统进程去处理,而linux的nohup命令可以创建新的进程,如果主程序需要处理很多数据,比如一个队列,把这些记录分布开,可以提高主程序的响应,能更快的使主程序结束。

这个方案最早出现在这哥们的博客里,大家可以参考 http://blog.s135.com/read.php/311.htm

而我处理,基本基于PHP的cli模式,使用$argv传递参数而非url,在一些涉及轮询的程序中,可以尽快得把负载分散,使单一的轮询程序来处理下一次的轮询。

修改Linux用户登录的默认语言设置

作者 : admin 于 2008年12月20日, 16:47:41
2008
12-20

进入linux中断,查看自己的设置,可以看下 env命令的回显

默认都是us_EN.UTF-8

有一些字符出来全是乱码,尝试修改一下

修改用户主目录下 .bash_profile 文件,增加一行 export LANG=zh_CN.gbk

然后logout,再重新登录,部分字符显示正常。

sunboyu-amp-fastcgi-suexec-v22-alpha 发布

作者 : admin 于 2008年12月20日, 15:06:03
2008
12-20

Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.2

1、增加了m4-1.4.9

2、增加了autoconf-2.62

这两个包在安装eaccelerator-0.9.5.2的时候使用

3、增加了PHP –with-mcrypt 参数

4、增加了PHP –enable-sockets 参数

sunboyu-amp-fastcgi-suexec-v22-alpha

纯属扯淡

作者 : admin 于 2008年12月19日, 11:09:23
2008
12-19

老久没写日志,手痒痒,扯一篇。

前两天公司服务器总出点不大不小的故障,让人头疼,虽然我不是网管,但积极想几个解决方案还是应该的。

我提出了集中的备份存储,这种分布式的实时云备份(概念词语,扯淡)应该是最为有效的,能保证高冗余高可靠高安全,但实际是不现实的,一直在跟群里的高人们扯这个事。做技术的一般都考虑如何做到更安全更可靠,可这种安全可靠的代价是高的,不管从老板还是从项目,在一个写web的小组里做这种事情纯属烧包,集中存储+实时的工作备份,软件硬件成本远远高于找几个IT民工的价钱。钱摆在这里,兄弟们就别意淫了,老老实实手工备份是正道,谁丢数据了,自己加班补去吧,申请个加班工作餐也没几个钱。

最近把LAMP一套基础的东西都配置了一圈,基本能组成一个工作中高可用性高易用性的网络,不过这种配置离不了我这个网络高手,要想移植,得摸清所有的东西,其实更多的是我们这群民工的工作流程和工作习惯,有可移植性,也有不可移植性。代码易抄,精髓难学。

我在考虑是不是有必要把全套的东西详细整理一遍。

Pure-ftpd安装配置草稿-补充完全

作者 : admin 于 2008年12月18日, 09:47:45
2008
12-18
  1. cp /opt/mysql-5.0.22/lib/mysql/* /usr/lib          #解决编译依赖库问题
  2. ./configure --prefix=/opt/pure-ftpd \
  3. --with-mysql=/opt/mysql-5.0.22 \
  4. --with-rfc2640 \
  5. --with-language=simplified-chinese \
  6. --with-peruserlimits \
  7. --with-diraliases \
  8. --with-virtualchroot \
  9. --with-virtualhosts \
  10. --with-welcomemsg \
  11. --with-ftpwho \
  12. --with-quotas \
  13. --with-throttling \
  14. --with-cookie \
  15. --with-extauth \
  16. --with-puredb \
  17. --with-altlog \
  18. --with-sysquotas \
  19. --with-paranoidmsg \
  20. --with-ascii \
  21. --with-inetd
  22.  
  23. cp  $install_dir/pureftpd-mysql.conf /opt/pure-ftpd/
  24. cp  $install_dir/configuration-file/pure-config.pl pure-ftpd.conf /opt/pure-ftpd/

启动服务  /opt/pure-ftpd/pure-config.pl pure-ftpd.conf

这里补充完整:
安装完后,很多配置文件还在原来的安装包里,并没有部署到prefix目标文件夹下,需要手工复制过去,就是上边那两个,一个启动脚本,pure-config.pl 还有性能监控工具,统计工具等。
另外一个经常出现的问题:(为了重现,还得修改成错误的)
421 配置错误: 无效的SQL配置文件: /opt/pure-ftpd/etc/pureftpd-mysql.conf
这个问题网上很多问的,但解释不到位,这里详细解释一下:我们在编译的时候选择了好多参数,部分参数跟配置是对应的,只有编译相关模块,才能打开相关配置,否则是不行的,会报错,但这个软件报错不报错误行数,所以调试起来比较费劲,我是一个个配置行进行开关才发现这个问题的,比如,我开启了这行,MySQLGetRatioDL SELECT DLRatio FROM users WHERE User=”\L” 但我编译的时候未加 ratio这个参数,就报错了,所以在调试的时候一定要对照一下编译时候的参数。
mysql中,密码我用的encryt加密,调试记得打开防火墙,其他没什么需要注意的。

sunboyu-amp-fastcgi-suexec-v21-alpha 发布

作者 : admin 于 2008年12月15日, 21:58:14
2008
12-15

Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.1
1、增加了PHP –enable-bcmath 参数,支持高精度函数库
2、增加了ncurses MYSQL的一个依赖库
3、增加了apache –enable-so 参数

sunboyu-amp-fastcgi-suexec-v21-alpha

此脚本在Centos4.7ServerCD 最小安装,root账户下执行完全正常。

全面切换到CentOS-4.7.ServerCD

作者 : admin 于 2008年12月14日, 22:24:27
2008
12-14

下载地址 http://centos.ustc.edu.cn/centos/4.7/isos/x86_64/CentOS-4.7.ServerCD-x86_64.iso
注:根据需要下载x86_64或者i386版本
一般x86_64跑服务器或者64位CPU上,家用台式一般用i386,不过现在比较好的家用cpu也64位,我的就比较落后了……

安装还是老一套,我用vmware模拟的scis硬盘安装,选择的定制安全,选择组件那步直接选择mini安装即可。

因为5一直没有servercd,而发行版又太大,3个多G,所以还是选择这个精简的服务器版本。

PHP引用机制和垃圾回收机制详解

作者 : admin 于 2008年12月12日, 22:16:09
2008
12-12

PHP对变量的跟踪,其实是采用引用,比如 $a = “test” 那么就是在内存中开辟一个存储区,保存 test,$a 做为test的引用。

同时我们可以 $b = &$a,$b作为 $a的引用,他们同时指向test存储空间。

在文章 http://www.sunboyu.cn/2008/11/19/php%E4%B8%AD%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8%E8%AF%A6%E8%A7%A3.shtml 中,我们做了一个应用的测试,当删除一个引用后,变量并不消失,是因为PHP使用一个引用计数的东东。当$a=”test”建立后,test的引用计数就是1,建立 $b=&$a后,test的引用计数就是2,删除任何一个引用后,引用计数为1.

只要是引用计数不为0的数据,则为当前有效的数据。然而,当数据的引用计数为0的时候,系统就会识别此数据为垃圾数据,需要回收,这也就形成了PHP的垃圾回收机制。

 Page 1 of 3  1  2  3 »