September 2008 Archives

看了小洪的SecureCRT突然卡死的问题,看了一下英文解释,Terminal下ctrl+s和ctrl+q原先是设计为在网络不好的情况进行, terminal假死,输出卡死, ctrl+s/ctrl+q可以给一个signal, 等于再次输出。当然,在高速(ISDN就够了)稳定的情况下,ctrl+s和ctrl+q只会给你造成麻烦。
 发现这个事情我也遇到过,但是我我猥琐的逃避了,恩,我那不求甚解的毛病。
本质上来说,这种问题比较常见,windows用多了,到了Linux下就经常ctrl+s保存,然后回到windows下没事就按Esc再:wq
不过,这个真的不是我的错。

实际操作中, 发现键盘上的ScrollLock灯亮了又灭了,哦?终于明白这个灯和ScrollLock键的作用了。。。
PVPGN是Battle.Net的一个OpenSource实现,基于bnetd, 可以为WarCraft/Diablo/StarCraft/C&C等游戏提供战网服务。
安装过程:
如果直接在Synaptic Package Manager(新立德)中搜索并安装了pvpgn请先执行

# sudo apt-get --purge remove pvpgn
# sudo apt-get --purge remove bnetd
新立德中安装的pvpgn会缺少bnetd,apt-get安装的话会导致两者冲突
现在开始安装

# sudo apt-get install pvpgn   //安装PVPgN
# pvpgn-support-installer      //安装support文件
开始修改配置文件, 服务器IP地址或者域名需要替换为真实的地址
在/etc/pvpgn下的bnetd.conf中
# Change these to match your system, for example:
location = "服务器物理地址"
description = "战网服务器简介"
url = "服务器IP地址或者域名"
contact_name = "suchasplus"
contact_email = "suchasplus囧gmail.com" //联系人Email
skip_versioncheck = true   跳过版本检测 = 跳过
allow_bad_version = true 允许错误版本 = 允许
allow_unknown_version = true 允许未知版本 = 允许
# Server network info   服务器网络信息
servaddrs = "服务器IP地址或者域名:6112" # default interface (all) and default port (6112)
w3routeaddr = "服务器IP地址或者域名:6200"
在/var/lib/pvpgn/files的bnserver-WAR3.ini下
修改为:
[Server List Version]
VER=1001
[Server Gateways]
1=服务器IP地址或者域名
[服务器IP地址或者域名]
ZONE=8
ENU=服务器IP地址或者域名

最后/etc/init.d/pvpgn start进行启动, sudo netstat -nutpl 进行查看, 如果6112和6200端口均被bnetd监听,则说明战网服务已经启动。

  • 如果想更改提示服务器信息,比如EULA,新闻等等, 可以在以上两个目录中寻找txt文件进行修改,encoding必须是utf-8
  • 默认配置下是使用文件系统作为战网用户信息存储, 使用MySQL需要修改bnetd.conf中的
storage_path = file:mode=plain;dir=/var/lib/pvpgn/users;clan=/var/lib/pvpgn/clans;team=/var/lib/pvpgn/teams;default=/etc/pvpgn/bnetd_default_user.plain为storage_path = sql:mode=mysql;host=<host>;name=<databaseName>;user=<user> ;pass=<pass>;default=0
  • /etc/pvpgn/下有MySQL数据库DDL文件,名为sql_DB_layout等等
  • 必须使用w3l by ACID进行引导war3载入, w3l分为1.18~1.21和1.22两个包,要注意版本问题
  • 进入游戏前要使用BNeditor对GameDefaultGateWay进行修改并测试
  • 最好所有人都统一使用一个版本的warcraft3,不同版本可能导致掉线等事宜。

相关链接;
PVPGN 官方网站
PvPGN 官方技术论坛
PVPGN 官方下载页面
w3l 官方网

MySQL大有潜力...

| 1 Comment | No TrackBacks
160万行的MyISAM表,PRIAMRY为自增的int格式id,  在对常用group by, order by字段加上索引后,处理为未加的25分之一。
加上索引后, select语句使用子查询max()精确查询最新单条记录,处理时间大约为0.3秒,使用force index(PRIAMRY)后,where单条件对PRIMARY进行order by id desc limit 1, 处理时间大约为0.03秒

铭记一下

| No Comments | No TrackBacks
又发生了一个不可饶恕的错误, 耽误了一个下午的时间.
最简单的语句都没法执行了, 直接复制了Manual上的都无法执行, 已然崩溃了
最后彻底检查
把测试数据库直接导入了localhost, 然后去连接远程主机读取数据库
脑袋彻底的昏掉了
在IE下使用Table.innerHTML直接对Table进行操作的时候会报错,因为Table是一个比较特殊的Tag, IE下的TABLE、 TFOOT、 THEAD 和 TR 元素的innerHTML 属性是只读的。
Firefox和Opera下没有这个情况。
如果要改变table中元素的内容,可以使用DOM.

KeyPoints:
  • 使用DOM是一个比较好的方法
  • 使用 rowIndex 属性或rows collection去处理特定的row
  • 添加或删除行可以使用 insertRow 和 deleteRow 方法
  • 特定单元格可以使用 cellIndex 属性或cells collection
  • 添加或删除单元格可以使用 insertCell 和 deleteCell 方法
  • 若要更改特定单元格的内容,使用 innerHTML 属性
  • 使用 createElement 方法来创建表
  •  DOM 方法及属性(如 insertBefore, swapNode等) 等可用来修改表内容元素

相关链接:
PHP的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, php只能被用户触发, 被调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的定时处理
那么, 如果需要用PHP定时执行某些任务的话, 可以有以下俩个方法:
  1. Linux下crontab, windows下计划任务
  2. 找个被频繁调用的网页, 里面加上一个检测代码
  3. set_time_limit(0);
    ignore_user_abort(true);
    死循环
第一个方法是最常见的, 如果php服务器上没有权限去crontab, 也可以找一个自己的机器定期crontab去请求服务器
第二种方法, 论坛上定时清理新帖基本上就是这么实现的, 如果人气不旺的话, 可以考虑去别的火爆点的论坛里面发个图片, 调用自己的php来实现一个trigger就好了。 Discuz!是判断在00:00之后,第一个执行者去执行的。
第三种比较不靠谱, Apache重启了就得重新访问,  fastcgi倒是会好一点。

一套完整的运维管理系统应该包含以下五个模块

  1. 硬件拓扑管理维护
  2. 服务监控及统计
  3. 事件与故障检测告警
  4. 性能监控统计分析
  5. 访问统计分析

1.有点偏向资产管理,但是不仅仅是资产管理,从服务器全生命周期维护到网络拓扑维护,都应该包括
2和3基本上可以用nagios来一个大一统的包含, 搜狐和网易基本上就是这么做的, 但是nagios的报表系统还很不完善, 而且实际环境中, 非纯web网页性质的服务的参数设置很需要一番实战技巧, 弄不好就是一堆告警。
4.推荐使用cacti来实现,sohu由于历史遗留原因,基本采用mrtg。cacti取代mrtg已经有很长时间了,没有很多的历史遗留问题,可以直接使用cacti, 性能分析这块,本质上来说很繁琐,需要长期的紧盯跟踪分析,基本上上线测试的时候就可以搞定,真正的线上系统不出什么大问题倒是不必太紧盯,定期看看曲线就可以了。如果是访问量过大,服务器或者带宽撑不住了老板更高兴。
5.这块的数据比较的机密, 直接和市场营销部门联系。初期可以直接使用cnzz或者yahoo!的统计,也可以使用一些开源软件。对数据分析和访问跟踪有要求的话可以考虑一些商业产品,比如cnzz的wss, 还有银杏泰克的相关产品等等。真正的大型网站,访问统计及分析系统必须自己开发了,sina内部禁止使用msn和qq进行交流就是出于很明显的原因。

当然我这里想的比较的简单,真正产品化的运维系统应该和其他产品线相结合,不论开始是否使用开源软件,最后都要形成一套自己的体系。如果说开发方面Don't Reinvent the Wheel.,那么对于一个要成长为大型互联网公司的我们而言,就是河上有现成的桥,我们也要造一座自己的桥。Yahoo, Google, sina每一个前辈都证明了这个说法。