在线安装第一步:验证环境
? 验证端口是否被占用
第二步:在中控机上安装tiup组件1、执行如下命令安装 TiUP 工具:curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2、按如下步骤设置 TiUP 环境变量:重新声明全局环境变量:
source .bash_profile
确认tiup是否安装成功
which tiup
3、安装Tiup cluster组件tiup cluster
4、如果已经安装,则更新 TiUP cluster 组件至最新版本:tiup update --self && tiup update cluster
输出"Update successfully!”
代表更新成功
tiup --binary cluster
第三步:编辑初始化配置文件根据不同的集群拓扑,编辑配置文件模板
global: user: "tidb" ssh_port: 22 deploy_dir: "/tidb-deploy" data_dir: "/tidb-data"monitored: node_exporter_port: 9100 blackbox_exporter_port: 9115server_configs: tidb: log.slow-threshold: 300 tikv: readpool.storage.use-unified-pool: false readpool.coprocessor.use-unified-pool: true pd: replication.enable-placement-rules: truepd_servers: - host: 10.0.0.176 client_port: 2389 peer_port: 2390tidb_servers: - host: 10.0.0.176tikv_servers: - host: 10.0.0.177 port: 20160 status_port: 20180 - host: 10.0.0.177 port: 20161 status_port: 20181 - host: 10.0.0.177 port: 20162 status_port: 20182monitoring_servers: - host: 10.0.0.178 - port: 9092grafana_servers: - host: 10.0.0.178
配置文件命名为topology.yaml
tiup cluster deploy tidb-test v4.0.0 ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]
参数说明:
tidb-test
v4.0.0
,最新版本可以通过执行 tiup list tidb
来查看 TiUP 支持的版本topology.yaml
可以采用
tiup cluster deploy tidb-test v4.0.0 ./topology.yaml --user root -p
后续输入手动数据密码
预期日志结尾输出会有 Deployed cluster
tidb-testsuccessfully
关键词,表示部署成功。
tiup cluster list
第 6 步:检查部署的 TiDB 集群情况tiup cluster display tidb-test
预期输出包括 tidb-test
集群中实例 ID、角色、主机、监听端口和状态(由于还未启动,所以状态为 Down/inactive)、目录信息。
tiup cluster start tidb-test
预期结果输出 Started cluster tidb-test
successfully标志启动成功。
tiup cluster display tidb-test
预期结果输出,注意 Status 状态信息为 Up
说明集群状态正常
mysql -u root -h 10.0.1.4 -P 4000
离线安装1. 准备 TiUP 离线组件包2. 部署离线环境 TiUP 组件将离线包发送到目标集群的中控机后,执行以下命令安装 TiUP 组件:
tar xzvf tidb-community-server-v4.0.0-linux-amd64.tar.gz &&sh tidb-community-server-v4.0.0-linux-amd64/local_install.shsource /home/tidb/.bash_profile
3. TiKV 数据盘挂载注意:
推荐 TiKV 部署目标机器的数据目录使用 EXT4 文件系统格式。相比于 XFS 文件系统格式,EXT4 文件系统格式在 TiDB 集群部署案例较多,生产环境优先选择使用 EXT4 文件系统格式。
使用 root
用户登录目标机器,将部署目标机器数据盘格式化成 ext4 文件系统,挂载时添加 nodelalloc
和 noatime
挂载参数。nodelalloc
是必选参数,否则 TiUP 安装时检测无法通过;noatime
是可选建议参数。
注意:
如果你的数据盘已经格式化成 ext4 并挂载了磁盘,可先执行 umount /dev/nvme0n1p1
命令卸载,从编辑 /etc/fstab
文件步骤开始执行,添加挂载参数重新挂载即可。
以 /dev/nvme0n1
数据盘为例,具体操作步骤如下:
查看数据盘。
fdisk -l
Disk /dev/nvme0n1: 107.4 GB
创建分区表。
parted -s -a optimal /dev/sdb mklabel gpt -- mkpart primary ext4 1 -1
注意:
使用 lsblk
命令查看分区的设备号:对于 nvme 磁盘,生成的分区设备号一般为 nvme0n1p1
;对于普通磁盘(例如 /dev/sdb
),生成的的分区设备号一般为 sdb1
。
格式化文件系统。
mkfs.ext4 /dev/sdb
查看数据盘分区 UUID。
lsblk -f
编辑 /etc/fstab
文件,添加 nodelalloc
挂载参数。
vi /etc/fstab
UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatime 0 2
挂载数据盘。
mkdir /data1 && mount -a
执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc
,则表示已生效。
mount -t ext4
/dev/nvme0n1p1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered)
topology.yaml
cat topology.yaml
# # Global variables are applied to all deployments and used as the default value of# # the deployments if a specific deployment value is missing.global: user: "tidb" ssh_port: 22 deploy_dir: "/tidb-deploy" data_dir: "/tidb-data"server_configs: pd: replication.enable-placement-rules: truepd_servers: - host: 10.0.1.4 - host: 10.0.1.5 - host: 10.0.1.6tidb_servers: - host: 10.0.1.7 - host: 10.0.1.8 - host: 10.0.1.9tikv_servers: - host: 10.0.1.1 - host: 10.0.1.2 - host: 10.0.1.3monitoring_servers: - host: 10.0.1.4grafana_servers: - host: 10.0.1.4alertmanager_servers: - host: 10.0.1.4
5. 部署 TiDB 集群/path/to/mirror
是执行 local_install.sh
命令时输出的离线镜像包的位置:
export TIUP_MIRRORS=/path/to/mirror &&tiup cluster deploy tidb-test v4.0.0 topology.yaml --user tidb [-p] [-i /home/root/.ssh/gcp_rsa] &&tiup cluster start tidb-test
参数说明:
通过 TiUP cluster 部署的集群名称为 tidb-test
部署版本为 v4.0.0
,其他版本可以执行 tiup list tidb
获取
初始化配置文件为 topology.yaml
--user tidb:通过 tidb 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。
[-i] 及 [-p]:非必选项,如果已经配置免密登陆目标机,则不需填写。否则选择其一即可,[-i] 为可登录到部署机 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码
预期日志结尾输出会有 Deployed cluster
tidb-testsuccessfully
关键词,表示部署成功。
使用 TiUP 部署 TiDB 集群
标签:mount -a 最新 slow unit log deploy 结果 登录 案例
小编还为您整理了以下内容,可能对您也有帮助:
TiDB 基础操作集
1、测试环境推荐配置
2、生产环境推荐配置
3、 如果 tikv 服务器的 CPU及磁盘配置较高,可以考虑多实例部署,按照每个 tikv 实例16~20core + 64G 内存 + 800G 磁盘的比例分配硬件资源。
同时需要注意 inventory.ini 及 ansible/conf/tikv.yml 的相关配置。
4、tidb 服务器视业务类型,如果业务逻辑有偏 AP 类的 SQL,需要考虑配置大内存,防止出现 OOM。
如果是纯 TP 类业务,tidb 服务器 CPU 配置较高的话,也可以考虑多实例部署,每个 tidb-server 分配20~32core,可以避免无谓的CPU上下文切换, 减少 system cpu 消耗。
5、pd 服务器的磁盘可以配置200~500G 的SSD 盘,主要用来保存源数据信息。在集群规模较大,源数据信息较多的时候,SSD 磁盘能够避免源数据信息存取成为集群的瓶颈点。
1、操作系统版本要求
建议 centos 7.3及以上,支持 redhat 7.3版本及以上,不推荐其他版本的系统。
2、ansible、jinja 等软件依赖包版本,只需要验证中控机(运行ansible 机器)上软件版本满足条件即可
中控机:
监控机(grafana):
3、测试环境磁盘 IO 不满足需求
ansible-playbook bootstrap.yml --extra-vars "dev_mode=True"
加上 dev_mode=True 可以在部署时,绕过系统磁盘相关的 benchmark
4、关闭防火墙、开启时钟同步
systemctl status firewalld
systemctl status chronyd/ntpd
5、集群下所有服务器要配置不同的 hostname
如果否,可以编辑 inventory.ini 的配置项 set_hostname=True 来自动修改 hostname
6、调整参数
参数在 ansible/conf/目录下,tidb.yml,tikv.yml,常见的可能需要调整的参数
tidb.yml:
grpc-connection-count: 如果服务器 CPU 配置较高,tikv 实例个数较多,该参数可以调整至20~32之间
slow-threshold:slow-query 记录的阈值,默认300ms
level:日志级别,默认 info,可以视情况调整为 debug 或 error
tikv.yml:
sync-log:raft-log sync配置,默认值true,对于磁盘 io 消耗较高,测试/非金融生产环境建议设置为 false
region-split-check-diff:检测 region 的阈值,非 SSD 磁盘建议调大至32MB
rocksdb defaultcf block-cache-size(GB) = MEM * 80% / TiKV 实例数量 * 30%(多实例部署下配置,单实例部署不需要修改)
rocksdb writecf block-cache-size(GB) = MEM * 80% / TiKV 实例数量 * 45%(多实例部署下配置,单实例部署不需要修改)
rocksdb lockcf block-cache-size(GB) = MEM * 80% / TiKV 实例数量 * 2.5% (最小 128 MB)(多实例部署下配置,单实例部署不需要修改)
raftdb defaultcf block-cache-size(GB) = MEM * 80% / TiKV 实例数量 * 2.5% (最小 128 MB)(多实例部署下配置,单实例部署不需要修改)
多实例情况下,需要修改
readpool:
coprocessor:
high-concurrency
normal-concurrency
low-concurrency
三个参数,推荐为实例数*参数值 = CPU 核数 * 0.8。
raftstore:
capacity
磁盘总容量 / TiKV 实例数量,例如 “100GB”
修改完后,可以使用下面命令验证
cat tidb-ansible/conf/tikv.yml |grep -Ev "^$|#"
无误后执行
ansible-playbook rolling_update.yml --tags=tidb/tikv
滚动升级,tags 可选
7、官网有比较完善的在线+离线部署方案、在线升级指导、在线扩容缩容文档,具体参考:
https://pingcap.com/docs-cn/op-guide/ansible-deployment/
https://pingcap.com/docs-cn/op-guide/offline-ansible-deployment/
https://pingcap.com/docs-cn/op-guide/ansible-deployment-scale/
1、从 MySQL 迁移
TiDB 兼容 MySQL 语法,小数据量建议直接使用 mysqlmp、mymper 来全量导出数据,再通过 source、myloader 的方式导入 TiDB。
./bin/mymper -h 127.0.0.1 -P 3306 -u root -t 16 -F 64 -B test -T t1,t2 --skip-tz-utc -o ./var/test
./bin/loader -h 127.0.0.1 -u root -P 4000 -t 32 -d ./var/test
详情请参考: https://pingcap.com/docs-cn/op-guide/migration/#使用-mymper-loader-全量导入数据
如果数据量较大,超过几百 G,可以联系原厂申请试用 lightning 工具,loader 导入数据平均速度是20G/小时,lightning 约为100~150G/小时
2、从 Oracle 迁移
目前有几种方式可以参考
使用 OGG 做全量+增量同步
使用 Navicat Premium 版的 data transfer 功能,支持从 Oracle/SqlServer 迁移全量数据至 TiDB
通过 kafka 等消息队列工具,解析 OGG 的日志,开发写入 TiDB/MySQL 的工具
目前我们也在积极跟专业的数据异构平台合作,争取能够尽快在更多的数据迁移工具中兼容 TiDB 数据源。
1、启动集群
ansible-playbook start.yml --tags=tidb/tikv/pd
在正确的 ansible 目录下,确保 inventory.ini 里的配置正确,tags 可选
2、停止集群
ansible-playbook stop.yml --tags=tidb/tikv/pd
在正确的 ansible 目录下,确保 inventory.ini 里的配置正确,tags 可选
3、停止单个 tidb-server / tikv-server
ansible-playbook stop.yml --tags=tidb/tikv/pd -l IP
-l 后面接 inventory.ini 配置的IP 或别名
4、访问 tidb
TiDB 兼容 MySQL 协议,所有连接 MySQL 的方式都适用于TiDB
mysql -uroot -h127.0.0.1 -P4000 -p
常见的图形化界面工具,navicat 等都可以直接访问 tidb
同时也支持jdbc、odbc 等,需要注意的是 mysql 8.0版本的客户端,及 mariadb 客户端可能存在兼容性问题,不建议使用
SQL 语法基本兼容 MySQL,某些不兼容的场景见: https://pingcap.com/docs-cn/sql/mysql-compatibility/#与-mysql-兼容性对比
5、修改参数
可以通过修改 tidb-ansible/conf/tidb.yml 配置文件,然后执行
ansible-playbook rolling_update.yml --tags=tidb/tikv
也可以直接登录服务器,找到deploy_dir/conf/tidb.toml,直接编辑文件,然后 pkill tidb-server 来重启服务
6、查看 tidb 版本信息
select tidb_version();
Release Version: v2.1.0-rc.3-24-g23f90a6
Git Commit Hash: 23f90a68be321e724280da6033a2b63ebf6cc7dd
Git Branch: HEAD
UTC Build Time: 2018-10-10 09:18:39
GoVersion: go version go1.11 linux/amd64
Race Enabled: false
TiKV Min Version: 2.1.0-alpha.1-ff3dd160846b7d1aed9079c389fc188f7f5ea13e
Check Table Before Drop: false
7、备份 tidb 数据
全量备份可以采用 mymper,增量备份需要开启 binlog,实时恢复采用商业版工具 reparo。
8、查看监控数据
在 ansible 的配置文件 inventory.ini 里,有一个监控服务器的配置
[monitoring_servers]
10.1.163.87
deploy 的时候会默认在这个配置服务器上部署 grafana 组件,通过
http://10.1.163.87:3000 admin/admin 访问
具体一些常见的监控指标,请参考: https://pingcap.com/docs-cn/op-guide/dashboard-overview-info/
9、收集统计信息
set @@tidb_build_stats_concurrency=20;
set @@tidb_distsql_scan_concurrency=100;
set @@tidb_index_serial_scan_concurrency=20;
analyze table xxx index xxx;
修改上面三个参数可以提升 scan 效率。
具体统计信息相关,请参考: https://pingcap.com/docs-cn/sql/statistics/#统计信息简介
1、Transaction too large
TiDB 对于事务有,简单来说以下几点:
单个事务的SQL 语句数量不能超过5000,( 在 tidb.yml 可配 stmt-count-limit )
单条 KV entry 不超过 6MB
KV entry 的总条数不超过 30w
KV entry 的总大小不超过 100MB
备注:假设某张表有4个索引,那么一条数据对应的 kv entry 为数据+索引,一共5个kv 记录。
如果是批量 insert 或delete,建议先修改
set tidb_batch_insert = 1;
set tidb_batch_delete = 1;
update mysql.tidb set variable_value='24h' where variable_name='tikv_gc_life_time';
再执行 SQL。
如果是批量 update,建议采用 limit 循环的方式执行。
2、GC life time is shorter than transaction ration
GC Life Time 间隔时间过短,长事务本应读到的数据可能被清理了,可使用如下命令增加 GC Life Time :
update mysql.tidb set variable_value='30m' where variable_name='tikv_gc_life_time';
3、Lost connection to MySQL server ring query
log 中是否有 panic
dmesg 中是否有 oom,命令: dmesg -T | grep -i oom
长时间没有访问,也会收到这个报错,一般是 tcp 超时导致的,tcp 长时间不用, 会被操作系统 kill。
TiDB修改配置参数
在TiDB 中,“修改配置参数”似乎是个不精准的说法,它实际包含了以下内容:
TiDB的配置修改比较混乱,先做个总结,再介绍具体内容:
查看TiDB系统变量:
集群中所有 TiDB Server 都生效;
持久化在哪里?
持久化在 kv 存储中,跟数据一样持久化了,不会持久化在 conf/tidb.toml 配置文件中。所以不用担心 tiup upgrade 和 tiup reload 等运维操作会把配置文件覆盖,不会导致修改失效,因为这个修改的持久化不依赖配置文件。
有些参数的作用域只有会话级别。也就是只能会话级修改,这不代表着不能被动态修改。
修改方式和会话级修改一样:
修改 Instance 级别的参数修改不会持久化,那么如何持久化呢?
a. 手工修改 TiDB 的配置文件:
b. 并使用 tiup edit-config 来修改对应的配置项,不需要做 tiup reload:
内容如下:
目前查看官方文档,发现只有3个只读变量:hostname、tidb_config、tidb_current_ts,没法通过 set variables 修改。作用域比较奇怪,用法介绍也不清楚,看起来没有修改的必要。如果一定要修改可以通过 tiup 方法修改。
修改集群配置包括TiDB、TiKV 以及 PD 在内的各组件的配置进行修改。
使用 edit-config 命令来编辑参数,以编辑模式打开该集群的配置文件:
如果配置的生效范围为该组件全局,则配置到 server_configs,比如修改所有 tikv 的 log-level 为 waring(默认是 info):
如果配置的生效范围为某个节点,则配置到具体节点的 config 中。例如:
tiup reload 分发配置并滚动重启组件,无论是否可以动态修改的参数都会重启,并且默认会重启所有组件,可以选择指定节点或者组件:
tiup cluster reload ${cluster-name} [-N <nodes>] [-R <roles>]
示例中我们只修改 tikv 的 log-level 为 waring,所以用 -R tikv 指定只重启 tikv 节点:
set config 当前4.0版本属于实验性功能,不建议在生产使用: https://docs.pingcap.com/zh/tidb/stable/dynamic-config
目前只支持修改 TiKV 和 PD 的配置,TIDB的配置修改用上面的 set variables 方法。
查看当前参数设置:
用 set config 修改参数,会持久化到配置文件。log-level 无法动态修改,不会报错但是会有 warnings,对于不能动态修改的参数使用 tiup 进行修改:
动态修改示例:
虽然TiKV的配置文件 conf/tikv.toml 会持久化这个修改,但是为了防止tiup upgrade 和 tiup reload 等运维操作把配置文件覆盖导致修改失效,还需要执行 tiup edit-config 来编辑参数。
【转】ksoftirqd进程耗尽单核100%si处理软中断导致性能瓶颈
最近测试LVS性能,发现当CPU其中一个核耗尽后系统达到性能顶峰。 消耗CPU资源的是ksoftirqd进程,全部用于处理软中断(从进程名也能识别出了)。
搜了一下,很多人都遇到这类问题,似乎也没有解决。了解到并尝试过的解决方案有:
1、减少集群成员的数量;
2、修改集群模式(NAT、TURNL、DR);
3、修改集群调度算法;
4、升级操作系统内核到2.6.20以上;
5、调整网卡的最大传输单元(MTU);
6、修改设备中断方式;
7、使用多网卡负载均衡;
8、升级硬件(网卡);
9、更换操作系统。
一一解说如下吧:
第1点:减少集群成员的数量。由于瓶颈不在真实服务器上,所以减少成员数量,lvs性能没有明显变化。
第2点:修改集群模式。理论上DR模式是最省资源的,大概了解理论的朋友应该都知道。由于NAT模式不满足需求,故仅对比了DR和TUN模式,两者没有明显区别。
第3点:修改集群调度算法。已有的十种算法中属rr最简单,而且目前瓶颈还未深入到这一层。实际上在处理网络包的时候导致的瓶颈。调度算法简单比较了rr和wrr,两者没有明显区别。
第4点: 升级操作系统内核到2.6.20以上 。我直接升级到当前已发布的最新版本2.6.34,结果瓶颈并没有得到改善。
第5点:调整网卡的最大传输单元。交换机支持最大的传输单元是9216,将网卡的最大传输单元分别修改为:1500(默认)、5000、9000、9216。其中1500和5000两者没有明显差别,9000和9216会导致网络不稳定,性能也没有提高反而出现大量连接超时。
第6点:修改设备中断方式。通过修改设置中断/proc/irq/${网卡中断号}/smp_affinity:
测试服务器CPU为四核,理论上网卡的smp_affinity值为1、2、4、8分别对应cpu0、cpu1、cpu2、cpu3。
结果:
1、网卡的smp_affinity默认值为8,测试过程中软中断全部由cpu3处理。正确
2、设置smp_affinity = 1,测试过程中软中断全部由cpu0处理。正确
3、设置smp_affinity = 2,测试过程中软中断全部由cpu1处理。正确
4、设置smp_affinity = 4,测试过程中软中断全部由cpu2处理。正确
5、设置smp_affinity = 5,测试过程中软中断全部由cpu0处理,预期应该分配给cpu0和cpu2处理。无效
6、设置smp_affinity = f,测试过程中软中断全部由cpu0处理,预期应该分配给cpu0、cpu1、cpu2和cpu2处理。无效
即:修改smp_affinity的功能只针对单核有效。
第7点:使用多网卡负载均衡。此方案可行!使用两张网卡绑定一个IP地址,性能就提升了一倍,效果非常明显。原因就是两张网卡各用一个CPU核,相比用单核而言,性能自然提升一倍。
配置方式如下:
第8点,升级硬件,使用支持RSS功能的网卡。**
下面是 intel 对RSS的说明
Receive-side scaling (RSS) routes incoming packets to specific queues, efficiently balancing network loads across CPU cores and increasing performance on multi-processor systems. RSS, called Scalable I/O in Linux*, creates a hash table from IP, TCP, and Port Addresses and uses that table to decide which queue to route a packet to, and to which processor the packet should be associated.
可是从我们使用网卡的官网硬件指标上,都是支持RSS的。Windows的设置方式是 **netsh int tcp set global rss=enabled** 。
第9点,更换操作系统。此方案在生产环境下部署的可能性比较小,但是否关操作系统的事确实需要确认。
据说Windows的NLB、solaris、AIX支持网卡RSS,目前还有待确认。
【转】ksoftirqd进程耗尽单核100%si处理软中断导致性能瓶颈
最近测试LVS性能,发现当CPU其中一个核耗尽后系统达到性能顶峰。 消耗CPU资源的是ksoftirqd进程,全部用于处理软中断(从进程名也能识别出了)。
搜了一下,很多人都遇到这类问题,似乎也没有解决。了解到并尝试过的解决方案有:
1、减少集群成员的数量;
2、修改集群模式(NAT、TURNL、DR);
3、修改集群调度算法;
4、升级操作系统内核到2.6.20以上;
5、调整网卡的最大传输单元(MTU);
6、修改设备中断方式;
7、使用多网卡负载均衡;
8、升级硬件(网卡);
9、更换操作系统。
一一解说如下吧:
第1点:减少集群成员的数量。由于瓶颈不在真实服务器上,所以减少成员数量,lvs性能没有明显变化。
第2点:修改集群模式。理论上DR模式是最省资源的,大概了解理论的朋友应该都知道。由于NAT模式不满足需求,故仅对比了DR和TUN模式,两者没有明显区别。
第3点:修改集群调度算法。已有的十种算法中属rr最简单,而且目前瓶颈还未深入到这一层。实际上在处理网络包的时候导致的瓶颈。调度算法简单比较了rr和wrr,两者没有明显区别。
第4点: 升级操作系统内核到2.6.20以上 。我直接升级到当前已发布的最新版本2.6.34,结果瓶颈并没有得到改善。
第5点:调整网卡的最大传输单元。交换机支持最大的传输单元是9216,将网卡的最大传输单元分别修改为:1500(默认)、5000、9000、9216。其中1500和5000两者没有明显差别,9000和9216会导致网络不稳定,性能也没有提高反而出现大量连接超时。
第6点:修改设备中断方式。通过修改设置中断/proc/irq/${网卡中断号}/smp_affinity:
测试服务器CPU为四核,理论上网卡的smp_affinity值为1、2、4、8分别对应cpu0、cpu1、cpu2、cpu3。
结果:
1、网卡的smp_affinity默认值为8,测试过程中软中断全部由cpu3处理。正确
2、设置smp_affinity = 1,测试过程中软中断全部由cpu0处理。正确
3、设置smp_affinity = 2,测试过程中软中断全部由cpu1处理。正确
4、设置smp_affinity = 4,测试过程中软中断全部由cpu2处理。正确
5、设置smp_affinity = 5,测试过程中软中断全部由cpu0处理,预期应该分配给cpu0和cpu2处理。无效
6、设置smp_affinity = f,测试过程中软中断全部由cpu0处理,预期应该分配给cpu0、cpu1、cpu2和cpu2处理。无效
即:修改smp_affinity的功能只针对单核有效。
第7点:使用多网卡负载均衡。此方案可行!使用两张网卡绑定一个IP地址,性能就提升了一倍,效果非常明显。原因就是两张网卡各用一个CPU核,相比用单核而言,性能自然提升一倍。
配置方式如下:
第8点,升级硬件,使用支持RSS功能的网卡。**
下面是 intel 对RSS的说明
Receive-side scaling (RSS) routes incoming packets to specific queues, efficiently balancing network loads across CPU cores and increasing performance on multi-processor systems. RSS, called Scalable I/O in Linux*, creates a hash table from IP, TCP, and Port Addresses and uses that table to decide which queue to route a packet to, and to which processor the packet should be associated.
可是从我们使用网卡的官网硬件指标上,都是支持RSS的。Windows的设置方式是 **netsh int tcp set global rss=enabled** 。
第9点,更换操作系统。此方案在生产环境下部署的可能性比较小,但是否关操作系统的事确实需要确认。
据说Windows的NLB、solaris、AIX支持网卡RSS,目前还有待确认。
福田汽车向湖北供应商承诺年采购额增20%,3.5亿多款项已提前到账
在全国各地陆续复工之时,身处疫情重灾区的湖北省内企业却仍身处抵抗新冠肺炎的关键时刻,至于何时能恢复企业运转、疫情会对企业带来多大影响,目前都是未知数。
据悉,由于疫情严重导致复工不断延期,湖北汽车零部件商普遍面临高额的员工成本以及设备成本,现金流趋于紧张,即便是组织复工的零部件供应企业,也面临原材料紧缺、人员不足等。同时业内预估,由于汽车行业对供应商的采购打款周期较长,复工后供应商的现金流紧张状况在短时间内也难以缓解。
据湖北三环车桥有限公司福田业务负责人蒋启亮介绍,突如其来的疫情给他所负责的业务造成的直接经济损失达3000万左右,而公司整体的损失更是高达1.5至2个亿,严重影响了全年的发展及业绩规划。
感同身受到这些企业的困境后,日前,一封“春天的来信”从北京发出,为湖北企业送去硬核支持。2月10日,福田汽车发出《春必来之,君定绽放--福田汽车致湖北供应商的一封信》,福田汽车集团、总经理巩月琼在信中提出,福田汽车将对湖北供应商实施的四大务实承诺。
福田汽车的公开信中表示,第一,在疫情结束后,无论湖北供应商何时复工,福田汽车都将确保今年的采购额在2019年的基础上增长20%。第二,采购湖北供应商的产品,全部现款提货,为迅速复产提供支援。第三,积极保障湖北供应商供货的消毒防疫及物流运输工作。第四,建立完备的监督管理机制,严格执行以上承诺,财务系统也将按照承诺内容进行安排,同时设立反馈专线。
从湖北汽车零部件企业最担忧的订单流失问题,到资金链稳定问题,再到防疫安全和物流需求,以及以上承诺的落实问题,福田汽车全部都给予了保证。作为国内最大的商用车领军企业,福田的承诺显然给湖北供应商注入了强心剂和定心丸。
日前,福田汽车做出了更硬核的支持举措:在湖北无法开工的情况下,福田汽车主动与湖北供应商联系,3.5亿多的款项已提前支付到账。
湖北是国内汽车制造业的核心区域,其汽车制造及配套零部件供应比例一直位于全国前列,现已形成两条汽车工业长廊,分别是从十堰至襄樊、随州、孝感、武汉沿线;以及从荆州、宜昌、至黄冈和黄石沿江,产业集群优势明显。
据了解,福田汽车在湖北地区已布局了包括车桥、离合器、减震器、ECU总成、蓄电池等数十个产品品类供应体系,总计有46家各级供应商,其中采购额超过1000万的有25家。核心部件供应商包括三环车桥、骆驼电池、永安车桥、菱电电控等十余家企业。其中,三环车桥等供应商是位居中国机械工业500强、中国汽车零部件100强的零部件配套龙头企业。
2019年,在商用车行业整体下滑9%的基础上,福田汽车年销量仍达到54万辆,逆势增长5.4%,其零配件采购金额也随之增加。据统计,2019年度,福田汽车针对湖北供应商的采购额为19.8亿元,占集团采购额的3.3%。其中,三环车桥、骆驼电池、永安车桥、菱电电控等几家企业的供货份额位于前列,采购金额超1900万元。
与2018年相比,2019年福田汽车在顶着压力逆势增长的情况下,对湖北供应商的采购额同比增加了1%,而福田此次承诺的2020年采购额同比增幅高达20%,在全国汽车市场都受到疫情影响、福田汽车全年压力同样倍增的情况下,福田此举显然是在将湖北供应商的压力大幅度的转移到了自己身上。
“目前,福田汽车的工厂已经陆续恢复生产,走向正轨,集团领导注意到湖北供应商受疫情影响迟迟不能复工,作为福田汽车重要的供应链伙伴,集团领导表示深切关注,并要求采购部等部门迅速了解供应商需求,拿出解决方案,最终上会讨论迅速制定出这四大承诺,以实际行动支持湖北供应商坚持抗疫,解决后顾之忧。”对于企业内部是如何做出这一决策的,福田方面表示称。
据中汽协调查数据显示,受新型冠状病毒感染的肺炎疫情影响,零部件企业营业收入会出现损失,最高将达到20亿元。在零部件企业中,营收收入损失在2000万元到5000万元的企业占比为16%。
由于产业集聚规模较大和复工较晚,目前,湖北的整车企业及上下游供应链都面临着成本增加、现金流紧张的局面,同时,湖北汽车业在这场疫情中受到的重创也直接影响到了国内汽车业的恢复,众多整车企业因为来自湖北的零部件断供而影响了复工进程,不得不寻找备用供应商。
对此,福田汽车呼吁,同气连枝,中国所有的汽车厂商应一同助力湖北零部件供应以及汽车企业的“春天”提前到来,共同恢复经济平稳运行及汽车产业发展。
“我们最大的收获来源于信心方面!作为身处疫区的供应商,我们深深感受到了福田汽车给予的关怀和支持,让我们更有信心面对疫情,战胜困难。” 湖北三环离合器有限公司相关负责人项燕国表示。
从新冠疫情爆发至今,福田汽车一直密切关注疫区需求,并科学、系统的部署了对湖北的务实援助。2月1日,北汽集团联合北汽福田汽车捐赠40 辆被称为“移动净化器”的福田图雅诺负压救护车,负压救护车是湖北抗疫中抢救重症患者最需要的关键物资。2月13日,首批8辆负压救护车已先行交付湖北武汉市第七医院、汉川市中医院、黄冈市中心医院等7家医院,即刻投入到一线救援工作中。
为保障大量药品、医疗和生活保障物资第一时间运输到湖北省各地,一批批满载疫情防控物资的福田欧曼重卡、福田欧马可,也纷纷火速奔赴疫情前线。此外,近日中关村发布的首批抗击疫情的新技术新产品新服务清单中,福田汽车凭借医疗废弃物运输车、冷藏车以及负压救护车等有效抗击疫情、迅速投入使用的产品成功入选首批清单。
福田汽车方面表示,福田汽车将持续对湖北抵抗疫情以及产业经济的恢复贡献力所能及的帮助。相信随着武汉火神山医院、雷神山医院相继完工,十余所方舟医院投入使用,新型冠状病毒肺炎疫情的也即将迎来拐点,相信在全国人民的努力下,湖北的“春天”也即将到来。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
20世纪末规模最宏大的一场坦克战役发生在哪里?
我要你们记住,没有哪个杂种是靠“为国捐躯”来赢得一场战争的。要赢得战争,靠的是让敌国那些可怜的杂种为他们的国家捐躯。
--美国陆军上将,乔治巴顿
1 傻大木的光辉时刻
△在阅兵式上朝天放的萨达姆
1990年8月2日凌晨2点,由14个师组成的10万伊拉克大军越过科威特边境,发动了一场预谋已久的入侵。只有2万兵力的科军,无力抵抗潮水般的敌人。下午2时30分,伊拉克共和国卫队占领了科威特王宫。
第二天,伴随着伊军控制科威特全境,令人发指的暴行也降临在了这个富裕的沙漠小国。如狼似虎的伊军在成内肆意劫掠,科威特金库中的254万盎司黄金与银行旗下的8家金融机构,遭到了伊拉克人的洗劫。科威特航空公司的18架客机也被掳掠到了巴格达。就连动物园中的动物都被伊军打死烹成了食物。医院中的病人们被赶出来给受伤伊军腾出床位,婴儿也被残暴的从保温箱中扔出。在沦陷期间,约13000名科威特人被残杀或者失踪,超过25万人流离失所沦为难民。
△开入科威特城市的伊拉克坦克
面对国际社会的指责与禁运,萨达姆不仅毫不理睬,还诡辩说占领科威特是实现伊拉克的统一。随后他又在《致美国总统的公开信》中威胁说:让数千名美国人躺在棺材里回国!
伊拉克国防部的《卡迪西亚报》也宣称:最后一颗子弹肯定是伊拉克朝着奄奄一息的美国牛仔射去!
萨达姆的信心来自他自认为世界一流的军队。1990年的伊拉克拥有百万大军,其中包括9个装甲师、5个机械化师以及31个步兵师和22个特种作战旅。他们装备了5500辆坦克,6500多辆装甲车。其中有大约1500辆中国制69-II式主战坦克以及大量苏联T-55/62主战坦克。另有一支装备了1048架飞机的空军。
△伊拉克陆军的T72坦克
最令萨达姆自豪是他的共和国卫队。这支12万人的部队由2个军8个师构成,其中汉谟拉比与麦地那两个坦克师,配备了500多辆T-72M1坦克,并且在两伊战争中积累了丰富的经验。
伊军2个弹道导弹旅还装备了86部弹道导弹发射器,可以发射飞毛腿B、侯赛因与阿巴斯导弹。除了庞大的装甲集群外,伊拉克还拥有多种化学武器,在上世纪80年代,萨达姆就是用这些毒气屠戮了数十个库尔德村庄。
△伊拉克陆军的飞毛腿弹道导弹
2 剑指波斯湾
△包机前往沙特的美军士兵
8月7日,萨达姆的倒行逆施终于招来了国际社会的众怒。美国总统老布什批准了代号沙漠盾牌的紧急派遣行动。然后英法德意等北约国家纷纷加入,世界上最大的战争机器开始了高速运转。
短短5个月时间,西方15国就跨过大洋,部署了超过60万兵力。包括2750辆坦克与1700多架直升机。在西方国家的努力下,其他24个国家也出兵海湾,联合部队总兵力高达100余万,其中仅地面部队就有57.5万人与3700辆坦克。
美军地面部队的主力是第18空降军与第7军。其中第18空降军包含第101空中突击师、第82空降师、第24机步师与法国派来的第6轻型装甲师。第7军包括第1和第3装甲师,以及第1机和第3机步师的第3旅、第2装甲师(欠一旅),外加英国第1装甲师。
美国民众在电视中目睹了伊军的暴行后,对老布什总统的支持率一度飙升到了90%,宣战呼声高涨。以至于美国第101空中突击师在路过查努加市时,受到了英雄般的欢送。数以千计的民众聚集在路边为他们提供冷饮、炸鸡等食品,挥舞着国旗期待他们的凯旋归来。
1990年11月,联合国安理会批准通过了第678号决议,勒令伊拉克在1991年1月15日之前撤出科威特。随后,这个最后通牒遭到了萨达姆的拒绝。一场化时代的战争即将在波斯湾拉开战幕。
△进驻沙特的美军装甲部队
3 风暴来袭
△拉开战幕的阿帕奇直升机
1991年凌晨2时39分,第101师第1航空营的9架AH64阿帕奇武装直升机,摧毁了伊拉克边境上的两座关键雷达站。14分钟后,第37战术战斗机联队的F-117战斗机,如幽灵般地轰炸了伊拉克空军司令部等诸多指挥设施。沙漠风暴行动拉开序幕。仅在当天夜里,伊军就有25架飞机还没升空便被摧毁,其中包括3架最大的轰-6D中型轰炸机。
随后的战争,变成了联军空中力量的狂欢节。联军平均每天出击2600架次,最高峰达到了每天3400架次。4周的狂轰滥炸,联军共计出击 10万架次,并发射323枚巡航导弹。伊拉克的指挥与防空系统遭到了毁灭性的打击。70多个作战中心只剩下了6个还在运转,16个防空截击控制中心也只剩下了3个。
△发动突袭的F117战斗轰炸机
美军出动F-111/15E战斗轰炸机,携带GBU-12制导,配合专用于反坦克的A-10攻击机,对伊军装甲部队实施了精准猎杀。曾有两架F-15E,创下了用16枚GBU-12摧毁16辆坦克的辉煌战果。
截止2月24日,伊军已经有1772辆坦克、948辆装甲车、1474门火炮以及10多台导弹发射架,被联军轰成了零件状态。 而伊军发射的42枚侯赛因、43枚飞毛腿弹道导弹,也远没达到想要的战果。最严重的一次导弹袭击也只造成了26名美军阵亡。
△在无奈中乱打一气的伊拉克防空炮火
4 军刀出鞘
△美军的M1A1主战坦克
在空中突击的同时,地面攻势的筹备也紧锣密鼓的进行着。1月29日,伊拉克第3装甲师下属的第6旅,出动75辆T-62坦克与BTR-70装甲车、BMP-2步战车,向美军陆战队第1师的谢泼德特遣队发动突袭。但很快被陆战队员们用悍马吉普车和陶式反坦克导弹重创。23时,3架AC-130炮艇机、4架A-10攻击机和F-15E/16各两架加入战场,配合陆战队击退了伊军。在这场7小时的战斗中,美军击毁22辆坦克和装甲车,除了11名陆战队员被友军误伤外再无损失。
虽然在第二天,伊军第15机械化旅发动1500多人与上百辆装甲车、29辆坦克,击溃了防守海夫吉的沙特第2机步旅。但1月31日,在E-8“联合星”预警机与空中力量的配合下,美军就夺回了这里。经过激烈的巷战,美军杀伤伊军2000余人,击毁装甲车与坦克600多辆,而只付出了25名美军阵亡的微小代价。
△投掷GBU-12的F15战斗机
与此同时,联军还发起了一系列的佯攻作战来吸引伊军的注意力。先是美军第1骑兵师科威特西部的巴挺干河防线。伊军误认为联军将从这里实施突破,连忙把5个步兵师和一个装甲师抽调到了这里防御,导致面对美国第7军的防线十分空虚。海军陆战队第一远征集群也组建了特洛伊特遣队,通过构筑假阵地并实施欺骗性的通讯,让伊军情报误判。借助这些佯攻的掩护,第18空降军和第7军发动福音玛利亚行动。11个师完成了300英里的超远距离机动,成功绕到了伊军的侧翼与后方。
△伊拉克陆军的69式坦克
2月24日7时,已经等得不耐烦的联军地面部队,在长达500km的战线上向伊军残存的25个师发起了大规模。60架黑鹰直升机与40架CH-47D支奴干直升机,搭载着第101师第1旅的先头部队,向幼发拉底河发起突击。他们深入伊拉克境内93英里,俘虏了400多名伊军,还切断了科威特伊军的退路。左翼第7军与陆战队第1师和第2师也开始高速突击,配合第18空降军,包围了共和国卫队。
尽管此时的伊军,尚有约2500辆坦克、1800辆装甲车以及1500门火炮,但还是难以抵挡美军的铁甲钢拳。
先是陆战一师与陆战2师,在空中火力的支援下打垮了伊军第7和第14步兵师,俘虏了9000多人,击毁坦克数十辆而只有1人阵亡。接着是法军第6轻型装甲师,在下午2点攻占了萨勒曼机场,并俘虏2500多人,并且只有2人因为误伤阵亡。美军第1装甲师则遭到了伊军第26步兵师的反击。但短短十几分钟之内,美军就击毁了该师50多辆坦克和装甲车,俘虏了300多人,彻底击溃了该师。
右翼的英国第1装甲师,也向伊军第52装甲师发起了连续48小时的强袭,双方发了激烈的坦克战。战斗中,英军发挥观瞄与射程优势,摧毁了伊军40多辆坦克。他们在27日,全歼了第52装甲师,并重创3个步兵师,俘虏一位师长。一辆挑战者1坦克,甚至在5600米距离击毁了伊军一辆T-55坦克。
△创造坦克实战最远命中记录的挑战者1坦克
从2月25日开始,伊拉克人的反击才逐渐变得激烈起来。伊军第3装甲师与第1机械化师,从科威特城北部向陆战2师第6团发起反击。但恶劣的天气以及伊军点燃油井制造的烟雾,让他们自食苦果。整片战场上的能见度只有几米。伊军坦克中,不论是中国造的还是苏联造的,火控都很落后,根本无法瞄准。而美军的M1A1坦克,却能轻而易举的锁定并击溃他们。
陆战一师也在布尔甘油田遭到伊军反击,战斗最惨烈的时候,战场距离陆战一师的师部只有区区300米距离。但在AH-1W超级眼镜蛇直升机与AV-8B鹞式攻击机的支援下,陆战队员们还是粉碎了伊军的抵抗。他们击毁坦克上百辆,并俘虏了1500多人,巩固了杰拜尔机场。另一侧的第24机步师,也在夜战中击毁了伊军的数百辆坦克。
△可以从临时前线机场起飞的AV8B攻击机
26日午夜1时30分,发动地面攻势50个小时后,联军就俘虏了3万名伊军。他们的攻势,已经让伊军的后勤和士气彻底崩溃。有的伊军投降只是为了讨一口水喝。第7军深入敌境200公里,将战线近到距离科威特城只有16公里,萨达姆只得下令伊军撤出科威特城。但伊军在沿着通往巴士拉的主高速公路撤退时,遭到了美军航空兵和炮兵的暴雨打击。超过1400辆卡车、装甲车与坦克被摧毁,不计其数的伊军士兵倒在了这条死亡公路上。
△堆积在死亡公路两侧的装甲车辆残骸
5 共和国卫队的覆灭
△伊拉克陆军的T62坦克
26日拂晓,第7军的东进敲响了共和国卫队的丧钟。
当天傍晚时分,美军第3装甲师与伊军塔瓦尔卡纳机械化师的第29旅和第9旅。发生了遭遇战。在5个榴弹炮营与27门M270火箭炮的狂轰滥炸下,美军很快占据了绝对的主动权与优势,摧毁了大量伊军战车。随着天气的转好,第3装甲师的阿帕奇武装直升机也投入战场。在E-8预警机引导下,阿帕奇拦截了一支企图增援塔瓦尔卡纳师的伊军机步兵,一次就摧毁了8辆坦克与19辆装甲车。
另一侧的第2装骑团,则顶着恶劣的沙暴强行军,沿途歼灭了数个伊军小股部队。他们在下午4点攻入了塔瓦尔卡纳师与伊军第12装甲师的结合部。
随后4个小时的战斗被称为“东73”战役。此役中,第2装骑团“鹰”连表现出了装甲兵的最高水准。他们靠着热成像仪,将战场变成了单向透明。结果,这支仅仅9辆M1坦克与14辆布雷德利步兵战车的装甲骑兵连,居然击毁了伊军多达29辆坦克与24辆装甲车,俘虏了1300多人。自己却毫无损失。
2月27日,第7军乘胜追击,向共和国卫队残存的3个装甲师与机械化师再次发起突击。美军第1、第3装甲师、第1机步师、第2装骑团与英军第1装甲师,在战线上依次展开,与伊军展开了海湾战争中最激烈的坦克战。
第3装甲师首先撕裂了伊军第12装甲师的防线,然后又派出阿帕奇直升机,包抄伊军第10装甲师。这些低空杀手,使用先进的地狱火反坦克导弹,击毁了伊军数十辆坦克与装甲车。最后美军第1旅和第3旅的冲锋,击溃了伊军第10装甲师。
△共和国卫队的T72坦克集群
另一侧的美军第1装甲师则上演了一场1V3的重磅对决。该师第2旅的166辆M1坦克,在3000米距离就开始攻击阿德南、麦地那与塔卡尔瓦那,这三个共和国卫队的精锐师。只用了不到1个小时的时间就击毁了61辆坦克、34辆装甲车与200多辆其他车辆。而自身只有2辆“布雷德利”步战车战损,1人阵亡。该旅还诞生了整场战争中授勋最多的连队。
战至此时,伊军已经没有任何抵抗能力,唯有向北撤退。但他们的噩梦远远没有结束。
2月27日下午1点30分左右,101师下属四个攻击直升机营的阿帕奇,从前线机场起飞,直扑幼发拉底河上的河堤。这条河堤是伊军唯一退路,此时正挤满了伊军车辆以及数不清的士兵。他们已经溃不成军,没有丝毫防空能力。只能任由美军泼洒的机炮、火箭弹与地狱火导弹蹂躏。最后,56辆卡车、14辆装甲车、8门BM-21火箭炮以及两台SA-6雷达,成了美军的战果。一座重要桥梁也被彻底炸毁。
△被联军摧毁的伊拉克69式坦克
6 不言而喻的结果
△坦克坟场内的苏联与中国坦克
2月28日上午8点,联军总指挥施瓦茨科夫上将,向联军下达了停止进攻命令。这场100小时的地面战正式落下帷幕。
战前伊军部署的43个师,50余万兵力中,除7-10万人侥幸逃脱之外,其余全部覆灭。8.6万伊军被俘,3847辆坦克被击毁,还损失了2917门火炮与1450辆装甲车与324架飞机。仅美方的第7军,就击毁1300多辆坦克、1400多辆装甲车以及280多门火炮和100多套防空系统。俘虏2.2万名伊军。美军自身则只有148人阵亡,458人战斗中受伤,非战斗死亡138人,非战斗受伤2978人。联军其他国家也只阵亡192人,受伤392人。
△争先投降的伊拉克士兵
共和国卫队残存的汉谟拉比坦克师,在3月1-2日逃窜途中,又与美军第24机步师爆发了交火,但马上遭到歼灭。损失了400多辆卡车与187辆装甲车,残部只能徒步逃往巴士拉。
3月3号,交战双方签订停火协议。4月11号,联合国安理会宣布历时42天的海湾战争正式结束。
战争就是悲剧。