近期评论

Archive for the ‘技术’ Category

图数据库及图计算

概述

arangodb一种内存数据,一种基于document的nosql数据库。

比起neo4j性能和设计都要好很多。用户界面也好很多。支持单点模式和集群模式。

相比传统的数据库,和新型的nosql数据,图数据库有一个非常特别的地方,就是图计算,这是它的优势。

劣势在于如何把现实生活的数据抽象成图数据,也就是建模过程。这个反而更难些。

这里做一个开端,普及一些基础的图计算知识。

Read the rest of this entry »

怎样部署魔兽世界私服

how to install wow game server ?  Let us do it !

魔兽世界是一个古老又经典的大型网络游戏,当年火爆程度是其他所有游戏没法匹敌的,而这款游戏有对应开源服务端,客户端只需要使用官方对应的客户端即可。

怎么样搭建一个服务端呢?这里以客户端3.3.5即80 WLK版本为例说明。

提供官方安装文档:
https://trinitycore.atlassian.net/wiki/display/tc/Linux+Core+Installation

安装依赖包:
yum -y install readline-devel mysql-devel bzip2-devel

升级cmake:
wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz –no-check-certificate
tar -zxvf cmake-3.5.2.tar.gz
cd cmake-3.5.2
./configure –prefix=/usr/local/cmake-3.5.2
make -j16
make install

Read the rest of this entry »

SOCK_RAW构造ICMP隐蔽通道

客户端

参考上一节,用SOCK_RAW构成ICMP请求包,由于ICMP数据包结构只是RFC规定的格式,完全可以打破,只需要在服务端也运行一个perl脚步,针对客户端的格式数据进行处理即可实现利用icmp通信,利用发送命令,做任何操作等。

另外构造任何格式的数据包,跟校验和没有关系。

注意下面脚本中的pack参数a*表示不限字节长度,全部包含进来。

Read the rest of this entry »

lvs健康检查

lvs是一个高性能且比较成熟的解决方案,但是要玩的转不容易。这里谈谈健康检查的问题。

后端检查默认使用的模块是TCP_CHECK,这个模块的效果是每个一段时间定时探测后端的服务器的端口是否开放。

配置如下:

Read the rest of this entry »

TCP连接的弱点

这是一种比较新型的攻击方式,最近在调试国外的域名,发现当我部署一个网站服务器到国外服务器后,其他配置都正确,始终访问不了域名。

这个问题消耗了我半天的时间,刚开始感到非常奇怪…… Read the rest of this entry »

mysql性能调优之log

mysql调优涉及到很多方面,网上有很多的调优参数的帖子或博客,看起来都是浮云,有些明显是错误的,或者砍掉不用的,无效的,竟然也在那样的博客里面到处复制粘贴。

曾经我问过一个DBA,mysql主从同步延如何解决,这个工作五年以上的DBA竟然告诉我说增加线程数量可以提高同步效率,现在看来,我只有呵呵。且看我之前写过一段以源码为最终依据的技术分享: Read the rest of this entry »

如何清除大量垃圾评论

一段时间以来,随着我的网站越来越受欢迎,访问量越来越大,活跃用户和评论也越来越多。

但是也带来了一些问题,比如数据库性能瓶颈,大量垃圾评论。


垃圾评论是很多博主烦恼的问题,我的网站目前一个月不清理,一共会有60000条左右的评论。下面来谈谈我是怎么解决垃圾评论问题的。

Read the rest of this entry »

内核调优tcp_max_syn_backlog和somaxconn的区别

       The  behavior of the backlog argument on TCP sockets changed with Linux 2.2.  Now it specifies the queue length for completely established sockets waiting
       to be accepted, instead of the number of incomplete connection requests.  The maximum length of  the  queue  for  incomplete  sockets  can  be  set  using
       /proc/sys/net/ipv4/tcp_max_syn_backlog.   When syncookies are enabled there is no logical maximum length and this setting is ignored.  See tcp(7) for more
       information.

       If the backlog argument is greater than the value in /proc/sys/net/core/somaxconn, then it is silently truncated to that value; the default value in  this
       file is 128.  In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.

socket接收的所有连接都是存放在队列类型的数据结构中,关键问题是这种队列有两个,而且其长度都是可以设置的。

分别是下面两个内核参数:

/proc/sys/net/ipv4/tcp_max_syn_backlog

/proc/sys/net/core/somaxconn

其中:

Read the rest of this entry »

如何大幅提高网站的访问速度

最近在用一个wordpress的统计插件:WP statistics

这个插件看起来优雅美观,还有图表,可以统计每天的访问量,目前的PV大概平均20,000左右,高峰期接近50,000PV。刚开始觉得这个插件非常不错。但是用了一个月左右,发现我的网站越来越卡了。加载速度慢的难以忍受,尤其是刚开始的页面。

Read the rest of this entry »

NAT协议深入分析

概述

NAT:net address translate即网络地址翻译,通常叫地址转换协议,深入分析其原理后我更愿意叫它地址改变协议。

这个协议实在是普遍,其原理机制相关的基本资料也可以在网络随意找到,那我为什么还要再研究一遍呢?显然我并不觉得这个协议是个很简单的协议。

NAT分类:
一、单地址转换
1、一对多映射
家用的简单路由器就是个例子:

a、当内网客户端发起请求时,构造的五元组:源IP,目的IP,源端口,目的端口,协议。

b、来自内网的数据经过家用路由器时,五元组的源IP转换为家用路由器的临时公网地址,源端口转换为动态随机产生的端口。

c、外网服务器收到数据请求时,处理并把结果返回给路由器,五元组的源IP为外网服务器IP,源端口为外网服务器开放端口和客户端请求的端口一样,目的IP是家用路由器的公网地址,目的端口是家用路由器的动态随机端口。

d、来自外网的数据经过家用路由器时,五元组的源IP,源端口不变,目的IP转换为内网客户端的IP,目的端口转换为内网客户端发起请求时动态随机端口。

Read the rest of this entry »