vultr服务器网速问题排查和机房选择

vultr网速问题排查

公司用电信百兆,使用Vultr的日本服务器,延迟300多ms,丢包率50%,网页直接打不开,之前都能秒开Youtube1080分辨率视频,现在开个google搜索都要半天,然后就去排查问题。

先是测试vultr 服务器自身宽带有没有缺斤少两,下载speedtest工具测试,发现服务器自身网速快的飞起,下载有82M每秒。

1
2
3
4
5
6
7
8
9
10
11
12
13
git clone https://github.com/sivel/speedtest-cli.git
cd speedtest-cli/
python speedtest.py
[root@vultr speedtest-cli]# python speedtest.py
Retrieving speedtest.net configuration...
Testing from Choopa, LLC (167.179.101.219)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by i3D.net (Tokyo) [12.49 km]: 1.004 ms
Testing download speed................................................................................
Download: 825.28 Mbit/s
Testing upload speed......................................................................................................
Upload: 504.59 Mbit/s

那么只可能是本地网络到服务器的网络通道出了问题:


Hadoop2.9 单机/伪分布式安装(Centos7环境)

Hadoop2.9 单机/伪分布式安装(Centos7环境)

准备

需要准备的软件: Java , ssh

下载Haddop:http://www.apache.org/dyn/closer.cgi/hadoop/common/

安装SSH、配置SSH无密码登陆

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),一般情况下,CentOS 默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验:

1
rpm -qa | grep ssh

若需要安装,则可以通过 yum 进行安装

1
2
sudo yum install openssh-clients
sudo yum install openssh-server

测试ssh 是否可以用

1
ssh localhost

金融系统中正确的金额计算及存储方式

金融系统中正确的金额计算及存储方式

经典的精度丢失问题

Java中的类型float、double用来做计算会有精度丢失问题,下面来看下面的示例。

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
test1();
test2();
}

private static void test1() {
double totalAmount = 0.09;
double feeAmount = 0.02;
double tradeAmount = totalAmount - feeAmount;
System.out.println(tradeAmount);
}

上面的程序输出结果是多少?

0.07?非也!

正确的结果是:

1
0.06999999999999999

为什么是这样?


Nginx配置经验

1. Nginx 会导致 带下划线命名的Header参数丢失

nginx对下划线的头信息做了限制

  1. 不用下划线

  2. 配置nginx 参数

    underscores_in_headers on; (默认 underscores_in_headers 为off)

2. nginx proxy_pass后的url加不加/的区别

第一种:proxy_pass后缀不加斜杠

1
2
3
location /abc/ {
proxy_pass http://172.16.1.38:8080;
}

第二种:proxy_pass后缀加斜杠

1
2
3
location /abc/ {
proxy_pass http://172.16.1.38:8081/;
}

上面两种配置,区别只在于proxy_pass转发的路径后是否带/


物联网数据特性

物联网产生的数据通常具有以下明显的特征:

1: 数据是时序的,一定带有时间戳;

2:数据是结构化的;

3: 数据极少有更新或删除操作;

4:数据源是唯一的;

5:相对互联网应用,写多读少;

6:用户关注的是一段时间的趋势,而不是某一特点时间点的值;

7: 数据是有保留期限的;

8:数据的查询分析一定是基于时间段和地理区域的;

9:除存储查询外,还往往需要各种统计和实时计算操作;

10:流量平稳,可以预测;

11:往往需要有插值等一些特殊的计算;

12:数据量巨大,一天采集的数据就可以超过100亿条。


TDengine简单总结

TDengine简单总结

1. 总结

先放总结:

  1. 核心代码全部开源,目前是单机开源,如果要用集群版,还是要商业版收费,毕竟带着商业目标,小数据量单机可以玩玩
  2. 未披露扩展性、数据一致性、容错性、可用性等分布式技术细节,也未披露数据库的相关特性实现细节
  3. 做性能对比选择的视角比较奇怪:客户端数对单机服务器性能的影响,其他数据库评测的都是单机性能和集群机器数带来的水平扩展能力
  4. 只支持定长的数据类型(数值、bool和字符串),字符串只支持定长,如果超出申明长度会被截断(评测也全为定长数据)
  5. 聚合函数性能对比,tdengine的函数均是非常简单的函数,所有函数加起来不到20个,并且每个数据块都已经做了预聚合(和、最大、最小值等),所以这个评测应该是 预计算 VS 即席查询,结果就不公平了
  6. 提供了简版的缓存、MQ等组件。这些组件的分布式特性未可知
  7. 可以根据查询的时间范围直接对内存数据和本地文件进行聚合查询,SQL层面不需要关心
  8. 函数和特性过少,不合适做大数据分析,针对物联网数据的特点做了针对性优化,不过其定位领域也是IOT ,如果要扩展到其他非IOT时序场景,需要多考虑考虑

有人说只是个WAL,绝壁算不算一个数据库,没条件做性能测试,期待其他第三方的全方位评测


JVM8的启动参数

1. JVM版本

本文所描述的启动参数在如下JVM版本测试通过,

1
2
3
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

启动参数的推荐值主要针对的场景为:4核CPU + 4G内存的机器配置,部署单应用,应用的堆内存使用量在1-2GB。

2. 服务器配置

参数名 说明 默认值 推荐值 备注
server Java Hotsport Server VM 64位机器默认为server选项 启用 -

Git 合并多个Commit

Git 合并多个Commit

在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。

首先你要知道自己想合并的是哪几个提交,可以使用git log命令来查看提交历史,假如最近4条历史如下:


AI+ 项目复盘

AI+ 项目复盘

  • 启动时间过晚,错过最佳时间窗口
  • 没有找到渠道推广,最后找到合作方时,窗口期已过
  • 在窗口期的最后进行了一次裂变营销小实验,但未能发挥裂变作用
  • 营销流程太过繁琐,又想增加病毒性传播,有设置过高的传播路径,导致传播的效果差
  • 成员对裂变的模式不认可,情怀还是比什么都重要,导致产出的诱导效果一般,又想赚钱,又放不下身段
  • 想同时做客户留存,和病毒性传播,导致路径过长,路径如下:
    • (免费3-5次,诱发分享到群,点击进入客服消息,回复1,自动回复激活码地址,点击激活码地址,复制激活码,关闭客服消息,点击去激活,粘贴激活码,点击激活,回到主页)
    • (免费3-5次,诱发分享到群,点击进入客服消息,回复1,自动回复扫码公众号二维码,关注公众号,自动推动激活码地址,点击激活码地址,复制激活码,关闭客服消息,点击去激活,粘贴激活码,点击激活,回到主页)
  • 项目启动初期,认可项目模式,但是对市场一无所知,随着项目的进展,发现市场上早就充满了竞争者

git push提交成功后如何撤销回退

git push提交成功后如何撤销回退

我们在使用Git进行版本控制时,有可能会出现这种情况。git push后发现提交的内容不是想要的,这时候我们怎么做呢,提交上去的内容是没有删除按钮的(比如github,或码云)。所以我们需要一些手段将提交上去内容撤销下来。

首先将本地的内容回退到自己想要的版本。回退版本我一般使用

git reset


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×