服务器抗压测试 ==限流==降级==静态化页面==抢购

一丶服务器压测工具:

①:ab压测工具 测试业务代码
②:sysbench mysql压测
③:redis-benchmark redis压测工具
redis-benchmark -h 127.0.0.1 -p 6379-c50 10000 -t get
redis-benchmark -h 127.0.0.1 -p 6379-c50 10000 -t set
redis-benchmark -h 127.0.0.1 -p 6379-c50 10000 -t -p

二丶服务器限流:

①:php+redis 数据库限流
$key = ‘qianzhui’.time(); //用时间戳作为键名 判断一秒内的请求量
g e t = C a c h e : : i n c ( get = Cache::inc( get=Cache::inc(key); //相同键名的数据 值自增默认第一次为1
if($get<=500){
//执行数据库业务代码
}else{
return 0;
}
②:redis+lua+nginx
强烈推荐使用openresty,官网网址为:http://openresty.org/cn/ 手册:https://www.kancloud.cn/allanyu/openresty-best-practices/82569

三丶降级熔断

当访问量暴增的时候一些非核心功能代码会影响服务器性能。可以通过降级手段来缓解服务器压力
①人工降级:停用此功能或者静态化固定数据
②自动降级:微服务架构中需要服务与服务之间互相调用,此时利用中间件,让curl调用前先通过中间件(ufc),利用中间件注册中心设置并判断此服务超时次数 来实现自动熔断/降级

四丶抢购

策略:负载均衡丶消息队列丶页面静态化丶mysql集群丶redis集群丶kafka集群丶限流丶降级熔断丶系统评估 页面静态化或半静态化: ①用ajax请求库存api进行回显,其他页面静态化 ②nginx+lua+nginx 获取redis值 模板渲染在页面
抢购流程:请求抢购api->使用redis进行减库存->减一条就将一条放入队列/库存不足返回失败->队列来处理MYsql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
脚本使用简介: /******************************************************************************** void tcc_tell_user(long len,const char *fmt,...) void tcc_init_stochastic() int tcc_produce_stochastic(int a,int b) tcc_sscanf tcc_sprintf tcc_strcpy tcc_strcmp tcc_strstr tcc_strcat tcc_memcpy tcc_memcmp tcc_memset tcc_strlen tcc_malloc tcc_free *********************************************************************************/ void get_hex_string(unsigned char *in_dat,int in_len,char *ou_hex) { int i; char *t=(char*)tcc_malloc(8); ou_hex[0]=0; for(i=0;i<in_len;i++) { if(i%0x04==0 && i!=0) tcc_strcat(ou_hex," "); if(i%0x10==0 && i!=0) tcc_strcat(ou_hex,"\n"); tcc_sprintf(t,"X ",in_dat[i]); tcc_strcat(ou_hex,t); } tcc_free(t); } void msg_init() { // tcc_init_stochastic(); } void *msg_short_connect_form_data(long t,long s,long c,long *len) { char *data=(char*)tcc_malloc(128); *len=128; *(long*)(data+0x00)=128; *(long*)(data+0x04)=1; *(long*)(data+0x08)=0; *(long*)(data+0x0C)=0; int n=tcc_produce_stochastic(100,50000); tcc_sprintf(data+0x10,"hello%d",n); tcc_strcpy(data+0x20,"123456"); return data; } int msg_short_connect_recv_data(long s,long c,void *dat,long len) { unsigned char *ou_dat=(unsigned char*)tcc_malloc(5120); get_hex_string(dat,len,ou_dat); tcc_tell_user(5120,"s:%d c:%d len:%d\n%s\n\n",s,c,len,ou_dat); tcc_free(ou_dat); return 1; } void *msg_long_connect_form_data(long op,long s,long c,long *len) { char *data=(char*)tcc_malloc(128); *len=128; *(long*)(data+0x00)=128; *(long*)(data+0x04)=1; *(long*)(data+0x08)=0; *(long*)(data+0x0C)=0; int n=tcc_produce_stochastic(100,50000); tcc_sprintf(data+0x10,"hello%d",n); tcc_strcpy(data+0x20,"123456"); return data; } int msg_long_connect_recv_data(long s,long c,void *dat,long len) { unsigned char *ou_dat=(unsigned char*)tcc_malloc(5120); get_hex_string(dat,len,ou_dat); tcc_tell_user(5120,"s:%d c:%d len:%d\n%s\n\n",s,c,len,ou_dat); tcc_free(ou_dat); return 1; } void msg_free_data(void *arg) { tcc_free(arg); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值