腾讯云内核 什么叫内核
Linux内核:内存管理——NUMA架构
在早期单CPU时代,CPU与内存的交互依赖于北桥芯片和前端总线。随着技术发展,CPU频率提升并扩展至多核,共享北桥的UMA架构逐渐暴露了性能瓶颈。为了优化,内存控制器被移至CPU内,形成NUMA架构,每个CPU有自己的本地内存,通过QPI总线访问远程内存,这导致了访问速度的差异,即非均匀内存访问模型。
UMA架构的局限在于资源共享,扩展性受限。而NUMA通过多个内存控制器提升带宽,通过numactl命令可以查看和调整CPU和内存策略。然而,不正确的策略可能导致内存分配不均,比如数据库应用中可能因内存回收策略不当引发频繁的内存交换,影响服务性能。
解决这些问题,可以调整内存分配策略,如使用interleave=all,确保内存均匀分布。对于内存回收,数据库通常选择vm.zone_reclaim_mode=0,限制内存区域内部回收,减少页面频繁交换。对于深入了解,可以参考相关文档和教程,如腾讯云、GitHub和知乎的文章。
深入解读TDSQL-C的内核关键技术
腾讯云数据库专家工程师张远深入解读了腾讯云企业级分布式数据库TDSQL-C的内核关键技术。TDSQL-C基于全新计算存储分离的分布式数据库架构,融合传统数据库和云计算技术优势,提供极致计算能力与存储容量,性能和安全性媲美商用数据库。其100%兼容MySQL和PostgreSQL,支持集群和Serverless灵活弹性部署,有效克服传统架构下的存储量受限、扩展难、主从延迟高等缺点,为企业节省高达90%的成本。以下为张远关于TDSQL-C云原生数据库技术的详细解析:
TDSQL-C简介
基于共享存储的存储和计算分离架构是TDSQL-C总体架构的核心。与传统MySQL主备架构相比,TDSQL-C通过物理复制和减少数据副本数量,提高了性能和效率。TDSQL-C具有可靠性、极致性能、可用性和弹性扩展等关键特性。
TDSQL-C内核关键技术
1.高性能
-实现查询计划缓存(Plan Cache),显著减少SQL执行时间,性能提升约70%。
-异步组提交优化,提高事务提交效率,读写事务QPS提升70%。
- Log Compaction,减少redo日志量30%,提高数据库运行效率。
2.高可用
-物理复制机制,确保数据一致性与快速复制速度。
-备库延迟优化,支持16个备库提供读服务,备库延迟达到毫秒级别。
-独立buffer pool,降低计算节点重启对业务的影响。
-秒级RTO,计算节点崩溃恢复时间大幅缩短。
3.弹性扩展
-提供读服务的备库优化,避免读写IO冲突,提升用户体验。
- Btree一致性读优化,确保用户查询不受Btree分裂操作的影响。
-创新支持instant modify column,实现秒级修改列类型操作。
4.其它特性
- TDSQL-C的秒改列功能,通过元数据多版本化、行记录增加版本信息、只修改元数据等创新实现。
-通过purge预读解决undo空间膨胀问题,优化数据库性能。
展望未来,TDSQL-C将继续加强查询优化能力,引入新的join类型和并行查询拓展,探索多写支持,向HTAP方向发展,实现同时具备OLTP和OLAP能力。
检测阿里(腾讯云)服务器ipv6通道
苹果上架要求:要求支持IPV6only(因为阿里云主机没有IPV6only)
运维或后台可通过以下方式来检测服务器是否开启了ipv6通道:
方式1:使用ifconfig查看自己的IP地址是否含有IPv6地址。
方式2.查看服务监听的IP中是否有IPv6格式的地址。(netstat-tuln)
开启IPV6:
vim /etc/sysctl.conf
vim/etc/modprobe.d/disable_ipv6.conf
vim/etc/sysconfig/network
至此ipv6的服务器端支持已经完成,重启服务器测试是否支持ipv6,重启后, ifconfig查看ipv6的信息,有看到有关IPV6的输出就可以
以上是阿里的ipv6
1.查看服务器是否加载ipv6模块
lsmod| grep ipv6
如没有任何回显,则说明没有加载
加载ipv6模块
modprobe ipv6
再次运行lsmod| grep ipv6,如出现回显,则说明ipv6已经正常加载
2.修改配置文件启用ipv6
vi/etc/modprobe.d/ipv6.conf
修改options ipv6 disable=0
备注:如果是centos5的系统,配置文件在vi/etc/modprobe.conf,注销
alias net-pf-10
alias ipv6 disable=1 这两行
vi/etc/sysconfig/network
添加NETWORKING_IPV6=yes
配置文件修改完成之后,保存退出
然后service network restart 使配置生效
3.检查内核是否已经支持ipv6
sysctl-a| grep ipv6| grep disable
运行以上命令,查看有无回显,若有回显说明内核已经支持ipv6
若没有回显,重启服务器,使内核生效
4.开启内核参数支持ipv6
执行上述步骤之后,运行如下命令使内核开启ipv6
sysctl-w net.ipv6.conf.all.disable_ipv6=0
再次运行sysctl-a| grep ipv6| grep disable
若参数全部为0,则说明ipv6已经全部支持
5.在网卡上配置ipv6地址
以上配置都完成之后,网卡就可以支持ipv6地址了,启用一个试试吧
备注:以上全部步骤,所有修改参数的动作均是临时修改,如果想永久生效,请修改对应的配置文件,如sysctl.conf、ifcfg-eth0.conf
-------------------------------------
sysctl-p
net.ipv4.tcp_max_tw_buckets= 6000
net.ipv4.ip_local_port_range= 1024 65000
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_syncookies= 1
net.core.somaxconn= 262144
net.core.netdev_max_backlog= 262144
net.ipv4.tcp_max_orphans= 262144
net.ipv4.tcp_max_syn_backlog= 262144
net.ipv4.tcp_synack_retries= 1
net.ipv4.tcp_syn_retries= 1
net.ipv4.tcp_fin_timeout= 1
net.ipv4.tcp_keepalive_time= 30
net.ipv4.tcp_window_scaling= 1
net.ipv6.conf.all.disable_ipv6= 0
sysctl-a| grep ipv6| grep disable
net.ipv6.conf.all.disable_ipv6= 0
net.ipv6.conf.default.disable_ipv6= 0
net.ipv6.conf.lo.disable_ipv6= 0
net.ipv6.conf.eth0.disable_ipv6= 0