Jmeter-websocket测试

Jmeter-websocket测试

链接:https://pan.baidu.com/s/1ylM48hwaqk-xtsQR0rTv-w
提取码:rqfn

插件管理

  1. https://jmeter-plugins.org/install/Install/
  2. plugins-manager.jar 下载好的文件放到lib/ext目录下

websocket插件下载

WebSocket Samplers by Peter Doornbosch

相关资料

Jmeter插件下载地址
Jmeter:websocket测试
Jmeter进行webSocket接口测试
Jmeter对Web Socket进行压力测试
jmeter5.1在windows(含插件安装)及linux环境下安装

负载均衡

Nginx 配置负载均衡

负载均衡处理方案

  • 源地址哈希法:根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

  • 轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

  • 随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。

  • 加权轮询法:不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。

  • 加权随机法:与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。

  • 最小连接数法:由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。

相关资料

使用Nginx实现负载均衡
Nginx之负载均衡

全国行政数据处理

php处理全国省市区 数据从ecshop导入的

/**
     * 获取全国省市区列表(格式化后)
     */
    public function getRegionList()
    {
        $data = CoreRegion::find()->select(['region_id', 'region_name', 'parent_id', 'region_level'])->asArray()->all();
        $data = $this->assembleRegionData($data);
        return $data;
    }

    /**
     * 重组地区数据
     */
    public function assembleRegionData($data, $pid = 0)
    {
        $list = [];
        foreach ($data as $k => $v) {
            if ($v['parent_id'] == $pid) {
                // 继续查找其子市区县
                $v['list'] = $this->assembleRegionData($data, $v['region_id']);
                // 如果子地区为空,则unset掉
                if (empty($v['list'])) {
                    unset($v['list']);
                }
                $list[] = $v;
            }
        }
        return $list;

    }

相关资料

PHP格式化全国省市区列表

经纬度计算两地之间的距离

经纬度计算两地之间的距离

mysql

# 精华代码段
ROUND(6378.138*2*ASIN(SQRT(POW(SIN(({$latitude}*PI()/180-latitude*PI()/180)/2),2)+COS({$latitude}*PI()/180)*COS(latitude*PI()/180)*POW(SIN(({$longitude}*PI()/180-longitude*PI()/180)/2),2)))*1000) AS distance
# 完整代码段
$this->db->whereNotNull('u.longitude')->whereNotNull('u.latitude')->orderBy('distance', 'ASC')->get($this->getTable($this->table) . ' as r', null, "u.id as uid,r.id, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(({$latitude}*PI()/180-latitude*PI()/180)/2),2)+COS({$latitude}*PI()/180)*COS(latitude*PI()/180)*POW(SIN(({$longitude}*PI()/180-longitude*PI()/180)/2),2)))*1000) AS distance , u.longitude, u.latitude, r.level");

PHP

    /**
     * 根据起点坐标和终点坐标测距离
     * @param  [array]   $from  [起点坐标(经纬度),例如:array(118.012951,36.810024)]
     * @param  [array]   $to    [终点坐标(经纬度)]
     * @param  [bool]    $km        是否以公里为单位 false:米 true:公里(千米)
     * @param  [int]     $decimal   精度 保留小数位数
     * @return [string]  距离数值
     */
    function getDistance($from,$to,$km=true,$decimal=2){
        sort($from);
        sort($to);
        $EARTH_RADIUS = 6370.996; // 地球半径系数

        $distance = $EARTH_RADIUS*2*asin(sqrt(pow(sin( ($from[0]*pi()/180-$to[0]*pi()/180)/2),2)+cos($from[0]*pi()/180)*cos($to[0]*pi()/180)* pow(sin( ($from[1]*pi()/180-$to[1]*pi()/180)/2),2)))*1000;

        if($km){
            $distance = $distance / 1000;
        }

        return round($distance, $decimal);
    }

相关资料

mysql php和js根据经纬度计算距离
MySql根据经纬度查询任意距离范围内数据
PHP根据经纬度计算两地之间的距离

工具在线计算距离