lua的table复制copy
源代码实现,来至于RESTY-HTTP
代码如下:
-- Returns a new table, recursively copied from the one given.
--
-- @param table table to be copied
-- @return table
local function tbl_copy(orig)
local orig_type = type(orig)
local copy
if orig_type == "table" then
copy = {}
for orig_key, orig_value in next, orig, nil do
copy[tbl_copy(orig_key)] = tbl_copy(orig_value)
end
else -- number, string, boolean, etc
copy = orig
end
return copy
...
进程调试工具
查看TCP链接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' |
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
查看假死进程
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
还有两个工具
pstack
strace
使用windump监控流量
windump相关于linux和mac上的tcpdump,有些场景在windows平台上使用windump要比wireshark方便一些,wireshark是GUI形式的,还支持lua插件,有机会我们介绍wireshark的lua插件,windump是一个分析tcp/udp/icmp等协议监控的一个好工具,简单介绍一下使用,后期我们就是使用windump.exe这个命令行工具,分要我们应用服务器,分析我们的服务器承受压力的极限。
1.显示出所以的网卡设备。-D可以列出本机所有的网卡设备,包括VPN或是虚拟机建立的虚拟网卡。
windump.exe -D
监听指定网卡。-i 后面紧跟数字序号,表示本地网卡对应的序号,用 -D显示出来的序号。
windump.exe -i 1
-i 的后面跟的数字,就是本机网卡的序号名。
监听指定协议数据。udp的字样是我们指定监控udp协议的流量。
windump.exe -i 1 udp
监听指定端口数据。指定端口后就只监听流过这个端口的流量数据。
windump.exe -i 1 udp port 1234
监听指定主机 ...
快速安装MySQL与为Lapis修改mysql字符集
快速安装MySQL
下载安装Yum源
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装的MySQL与服务器端
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
启动关闭 MySQL服务
systemctl start mysqld.service
systemctl status mysqld.service
修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
grant all on *.* to root@'%' identified by 'password';
修改mysql字符集
第一种方式:
show vari ...
windump与graylog
抓取流量最流行的工具就是Wireshark,在Windows上Wireshark的GUI界面很酷,但对于在linux和mac用惯了tcpdump用户来说,用命令行的tcpdump更直接便捷。Windows上有没有类似tcpdump的抓包工具呢?答案是有的,就是windump,底层是基于winpcap库的命令行工具。
大体的背景是这样的,有一台Windows服务器运行了一个较定制化的闭源的radius服务,因为这是一个很老的服务,并没以完备的日志输出机制,我们无法从现有的日志统计出用户流量数据,在服务压力大到什么程度会出现问题,我们现掌握的数据中无法更好的识别民常,统计出流量分布,估算出预警的峰值,也无法可视化当前服务的状态。本身认证服务,随着外部的关联服务变的压力不段加大。
根据目前的现状整个出几个需求:
1.可在不入侵代码的前题下,量化监听流量。
2.可将流量日志数据传到大数据平台,进行非实时的统计,找出预警的阀值。
3.用基于winpcap自主开发的监听工具代替windump,做实时的数据分析,阀值预警、可视化负载状态。
本文侧生点是用windump和大数据graylog配合,做到 ...
libpcap监听网络端口数据
下面的代码是监听本机源80地址流出的数据, 并以字符的形式打印出来。
代码:
#include <pcap.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
void getPacket(u_char * arg, const struct pcap_pkthdr * pkthdr, const u_char * packet)
{
int * id = (int *)arg;
printf("id: %d\n", ++(*id));
printf("Packet length: %d\n", pkthdr->len);
printf("Number of bytes: %d\n", pkthdr->caplen);
printf("Recieved time: %s", ctime((const time_t *)&pkthdr->ts.tv_sec));
int i;
...
使用Openresty编写WAF插件
对于有的站点来说,除了一些上传文件的场景,基本上都是GET操作比较多,针对一些GET请求中存在的异常数据,可以在pipeline写一个小的WAF插件来拦截。
直接使用了X-WAF的规则文件:
[
{"Id":26,"RuleType":"cookie","RuleItem":"\\.\\./"},
{"Id":27,"RuleType":"cookie","RuleItem":"\\:\\$"},
{"Id":28,"RuleType":"cookie","RuleItem":"\\$\\{"},
{"Id":29,"RuleType":"cookie& ...
C调用LUA
通过一个简单的例子,看C是如何调用LUA的,这样将原有C处理数据的逻辑用LUA来做,省去了编译C的过程。
代码,如下:
#include <stdio.h>
#include <string.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
lua_State* L = NULL;
int main()
{
L = lua_open();
luaL_openlibs(L);
if (luaL_loadfile(L, "test.lua") || lua_pcall(L, 0,0,0))
error(L, "cannot run configuration file:%s", lua_tostring(L, -1));
double x = 1.0;
double y = 5.0;
double z;
lua_getglobal(L, "f");
lua_pushn ...
graylog的sidercar与nxlog部署
graylog的sidercar与nxlog部署
1.去github上下载sidercar.
2.配置sidercar的配置文件。
server_url: http://192.168.0.3:9100/api
update_interval: 10
tls_skip_verify: false
send_status: true
list_log_files:
node_id: graylog-collector-sidecar
collector_id: file:C:\Program Files\graylog\collector-sidecar\collector-id
cache_path: C:\Program Files\graylog\collector-sidecar\cache
log_path: C:\Program Files\graylog\collector-sidecar\logs
log_rotation_time: 86400
log_max_age: 604800
tags: [windows, iis]
backen ...
基于PyQt的微博客户端(二)
云服务器搭建
【概要】
客户端的数据交互:一部分来至新浪微博。另一部分数据来至新浪云,比如本地的用户验证时放到SAE上。
【环境】
服务器端使用的python django, SAE上本身的环境是配置好的,本地环境需要安装。Linux上的python django MySQL很好安装,还是apt-get和pip,主要是Windows版本也安装一份,更便于本地调试。
值得介绍的一点就是RPC,都是跳着写的…
Django安装:
未来和SAE同步,使用的是Django 1.5
https://pypi.python.org/pypi/Django/1.5.1
【参考】
Windows下安装Django
http://www.th7.cn/Program/Python/201305/136301.shtml
windows下安装Django
http://jingyan.baidu.com/article/466506580e7d29f549e5f8b6.html