买过一些空间,有时候有的朋友要放个小博客,于是就手动开通一些账号和绑定域名给他们,但总是不太方便,很麻烦,于是就有搞一个面板来实现这个功能。
    现在使用最多的主机面板就是cpanel,而cpanel恰好有很多api。
    于是搞了一个面板,可以将一个普通的cpanel用户账号多人共享,互不干扰。这样方便了主机合租和账号分享。朋友们共享主机时不再需要购买多个主机或reseller账号了。
    不过面板的账户间共享资源,所以隔离性上还是不如reseller账号的。所以建议还是朋友或熟悉的人之间使用。

    项目地址:http://code.google.com/p/cp-share/
    本文地址:http://www.snooda.com/read/307
    第一版实现了域名,数据库,ftp账号的管理,功能和界面都比较简陋。不过已经可以满足基本的需求了。后续慢慢完善。

    附截图一张:
点击在新窗口中浏览此图片


Tags:
    有一个问题,是在一个环境上的lighttpd一打日志就出core,很奇怪,看堆栈信息是出在mod_accesslog里,今天看了下,发现原来是试图打印%i导致的。
    lighttpd支持在日志中打印请求头中的字段,方法是%{key}i,这样就能在请求头中的key字段打印到日志里,打印referer等东西的时候比较方便。

    但如果直接写%i的话,由于没有指定key,导致NULL指针,lighttpd没有校验导致出core。

    恰好%I是打印请求长度,大写I还是比较容易误按成小写的。所以有了这个问题



Tags: ,

redis的性能初测

[| 不指定 2012/06/12 12:13]
    最近准备用用redis,于是做了下性能测试,在一台虚拟机上跑了下,发现add命令大概1s可以执行3-5w条,使用redis官方推荐的php客户端:Predis ,使用pipe功能批量插入1w条数据的话大概要0.3-0.5s,感觉速度有些慢,仔细研究了下,发现时php库在生成那个1w条的redis命令是非常慢,一个请求要耗费掉1s的cpu时间,实在是性能杀手,考虑后续使用c实现。







Tags:
    今天有同学希望将webserver与后端fcgi换成长连接以提高性能,于是在lighttpd里直接配置proxy-core.max-keep-alive-requests即可,为了做测试,后端只启动了一个fcgi进程。然后发现了奇怪的问题,每隔几个请求就会有一个非常非常慢的连接,需要等待10s左右。

    后来决定开strace看看,由于lighttpd配了多进程,不好搞,于是改成单worker,结果问题解决了。


    这样问题就豁然开朗了,原来多个请求落到了不同的lighttpd工作进程上,而唯一的一个fcgi进程被处理第一个请求的worker起长连接占用了,结果导致其他lighttpd无法连接到后端。


    这是一个启用长连接后比较隐蔽的坑,可能会导致各个webserver的worker进程间负载不一致。需要小心了。




Tags:

mysql5.5禁用innodb引擎方法

[| 不指定 2012/05/30 13:44]
    今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1      ib_logfile0  ib_logfile1,前者18m,后两个各5m,原来是迁移的时候从mysql5.0迁移到了5.5,而5.5关闭innodb启动不起来,于是我就开启了innodb,由于innodb会默认增加这几个数据文件和日志文件,导致变大。尝试设置数据文件的大小,结果告诉我最小10m,还是太大,于是探索关闭innodb的方法。
    看日志发现说由于mysql程序升级了,需要运行mysql_upgrade升级一下mysql里面的数据库,这个比较简单,和mysql命令用法是一样的,运行一遍就ok了。然后发现还是无法关闭innodb,很奇怪,查了下发现原来mysql5.5默认使用innodb了,所以无法简单的关闭掉,还要设置一下默认使用的引擎为myisam才可以,在my.cnf里加上如下两句:

default-storage-engine=MYISAM
innodb=OFF

重启mysql,然后删掉那三个讨厌的文件即可。





Tags:
    一直对内存操作的速度没有数值概念,只泛泛的知道memset影响效率,反复分配释放内存影响效率,具体速度如何,从来没试过,今天试验了一下。

    写了个程序,分配一个指针数组,挨个分配内存,然后挨个释放。使用的是一台2核16g内存的虚拟机。gcc版本3.4.2

    先是分配了1w个100字节块,发现5ms以内即可完成。
    然后扩大到500字节块,速度没什么变化。

    然后分配100w个字节块,平均需要270ms左右。
    字节块扩大的2k左右,大概5s完成。
    扩大到5k左右,大概12s左右。
    以上数据均为malloc+memset数据和calloc数据,两者不相上下。

    只malloc不memset,大概能缩短20%左右,可见memset对速度还是有一定影响的,不过对于性能要求不是那么严苛的程序,设置一下提高程序稳定性也是值得的。避免某变量忘记初始化出现野值的问题。



Tags:
    wp的速度慢是出了名的,主要是因为php的执行速度比较慢,页面间require的层数比较多,除了关闭不必要的插件外,在php端做字节码缓存也有不错的效果,开启字节码缓存很简单,相关的php扩展也有很多个,在这里选了apc扩展,直接apt-get install php-apc然后重启php即可。经试验发现wp的执行时间缩短了一半以上,效果相当的不错。


    然后发现mysql信息里提示慢查询的数量比较多,可惜之前没有开启记录,在my.cnf里加上如下三条即可。

log_slow_queries    = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

记录执行时间超过2秒的和没有用到索引的查询日志到mysql-slow.log中,这样就可以对sql语句进行调优了。



Tags: ,
    对于wordpress开启静态化url时如何在nginx下配置重写rewrite规则,网上一大抄的一个方式是说这样配置:

    if (!-e $request_filename)
    {
       rewrite ^(.+)$ /index.php?q=$1 last;
    }

    看起来没什么错误,但实际使用中总发现静态文件也被rewrite走了,去nginx官网发现有了新参数:

    在location /段里加上一句:try_files $uri $uri/ /index.php?q=$uri&$args;


    ok了,轻松愉快。


Tags: ,
    现在数据定期备份,使用的命令是mysqldump -uabc -pabc --lock-all-tables --all-databases > db.sql

    那么备份用的账号需要哪些权限才能进行这些操作呢?

    首先全局select权限是必须的。由于需要锁表,所以lock tables权限也需要,还有一个权限,就是reload,也是必须的,这个比较奇怪,猜测可能是导出的数据库中包含了权限数据库,所以需要该权限来操作。

    这三个权限就足够了,再多没有必要并且会对系统安全性产生影响。


Tags:
    今天下载一个资料,直接下载下不了,挂ssh代理拖又太慢了,着急睡觉,用vps下载发现这个地址还做了防盗链,要支持js,运行一下才能对ip进行授权,进而下下来,否则直接返回503错误。虽然模拟一下js运行的网络协议可行,但时间代价太大,那个搞出来都早下完了。于是搞了一个最简单方法。

     挂代理下载,这样代理vps的ip得到了授权,然后在vps上直接wget即可。

     但两台vps,一台实验可行,一台无效。纠结,可行的那个空间不足了。不过只要有一个行就ok,在有空间的那台vps上运行ssh -N can@canvps.com -D 127.0.0.1:9001,建立隧道。然后curl --socks5-hostname 127.0.0.1:9001 -o file http://addr/file

      搞定,可以睡觉了。等明天下完了再拖下来。



分页: 5/31 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]