mysql5.6 innodb_large_prefix引起的一个异常

phenomenon: Specified key was too long; max key length is 3072 bytes 在修改一个数据库字段时,字段容量被限制为了表前缀的大小而不是本身的容量大小 查了一下innodb_large_prefix究竟是什么? 动态行格式DYNAMIC row format 支持最大的索引前缀(3072)。由变量innodb_large_prefix进行控制。 By default, the index key prefix length limit is 767 bytes. See Section 13.1.13, “CREATE INDEX Statement”. For example, you might hit this limit with a column prefix index of more than 255 characters on a TEXT or VARCHAR column, assuming a utf8mb3 character set and the maximum of 3 bytes for each character....

 ·  · 

django ORM

https://www.cnblogs.com/Dominic-Ji/p/11516152.html 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 django中仅测试ORM 导入model,然后直接使用对应对象进行ORM操作。 text 1 2 3 4 5 6 7 import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings") import django django.setup() from xxx import models models.User.objects.all() 连接数据库 django配置数据库 python 1 2 3 4 5 6 7 8 9 10 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'USER': 'root', 'PASSWORD': '111', 'HOST':'127.0.0.1', 'NAME': 'book', 'CHARSET': 'utf8' } } 可选:pymysql 使用模块连接MySQL数据库::在项目中__init__.py 文件中添加配置: python 1 2 import pymysql pymysql....

 ·  · 

运维类面试题收集

如何优化 Linux系统(笼统) 不用root,添加普通用户,通过sudo授权管理 更改默认的远程连接SSH服务端口及禁止root用户远程连接 定时自动更新服务器时间 配置国内yum源 关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外) 调整文件描述符的数量 精简开机启动服务(crond rsyslog network sshd) 内核参数优化(/etc/sysctl.conf) 更改字符集,支持中文,但建议还是用英文字符集,防止乱码 锁定关键系统文件 清空/etc/issue,去除系统及内核版本登录前的屏幕显示 基础命令 ps aux 中的VSZ代表什么意思,RSS代表什么意思 VSZ:虚拟内存集,进程占用的虚拟内存空间 RSS:物理内存集,进程战用实际物理内存空间 shell下32位随机密码生成 text 1 cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass 将生成的32位随机数 保存到/pass文件里了 统计出nginx的access.log中访问量最多的5个IP text 1 cat access_log | awk '{print $1}' | sort | uniq -c | sort -n -r | head -5 web与lb 讲述一下LVS三种模式的工作过程 LVS负载的原理,和Nginx负载有啥区别 VS/NAT:(Virtual Server via Network Address Translation)...

 ·  · 

网络基础面试题收集

域名相关 什么是DNS劫持 DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。 通俗来讲:DNS劫持就是指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。范例,网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。 DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。 解决:对于DNS劫持,可以采用使用国外免费公用的DNS服务器解决。例如OpenDNS(208.67.222.222)或GoogleDNS(8.8.8.8)。 什么是DNS污染 DNS污染是指在DNS服务器中修改DNS解析结果的过程,以便将用户重定向到恶意网站或欺骗性网站,而不是所期望的目标网站。 攻击者可以通过多种方式进行DNS污染攻击。最常见的手段是在用户的网络中添加一个恶意DNS服务器,或者在受感染的计算机上运行一个恶意DNS服务器。当用户试图连接到互联网上的某个网站时,计算机将查询DNS服务器以查找目标网站的IP地址。如果攻击者控制的恶意DNS服务器已将相应的IP地址修改为攻击者的网站,则用户将被重定向到恶意网站或欺骗性网站。 DNS污染发生在用户请求的第一步上,直接从协议上对用户的DNS请求进行干扰。 DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube、Facebook等网站。 解决: 可靠的DNS服务器,但这种方式效果不佳 手动修改Hosts文件 使用VPN或域名远程解析 加密通信:VPN可以加密整个通信过程,这意味着攻击者无法窃取UDP数据包中的任何信息,包括DNS查询请求和响应。这样可以避免DNS查询被篡改的风险。 虚拟IP地址:VPN会给每个用户分配其所连接的虚拟IP地址,使用户的真实IP地址不会暴露在公共互联网中。这样,DNS服务器只能看到VPN服务器的IP地址,而无法识别用户的IP地址。这意味着攻击者无法跟踪用户的访问历史,从而减少遭受DNS污染攻击的风险。 总结: DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。 什么是域名被墙 这种情况一般出现在解析为国外地址的域名上,假如域名下的网站非法信息多,敏感,又不整改,会直接被G.F.W墙掉,就是通常所说的被封锁、被屏蔽、被和谐,结果就是访问域名是打不开的,但是解析是正常的。此时域名在国内是无法使用的,国外可以访问和使用。 主要有以下几种情况: ip 被墙 解决:换 ip 。 域名被 url 重置(访问时出现ERR_CONNECTION_RESET 或 “连接重置” 换域名 做301跳转,(有专门服务商),域名通过解析到国内301服务商,重定向到真是国外IP,以减少流量和权重的丢失。 上 https或域名备案,智能解析分国内,国外 。 可以使用HTTPS;一般来讲解析到国外的IP的域名,有敏感词会被重置,GFW可以进行敏感词检测(http为明文),使用https加密GFW无法检测数据包内容 ,(客户端与服务端默认会有公钥私钥,而GFW没有)。 域名被国家出口 dns 污染,解决:用国内 dns ,备案回国。 域名被省级 dns 污染,解决:能做到这个这里可能为内部或对应运营商被黑(只能进行dns清洗,一般大流量域名了) 什么是DNS清洗? DNS清洗是一项旨在阻止访问特定网站和域名的措施,在该措施中,Internet服务提供商(ISP)通过其服务器筛选特定网站的DNS查询,并将查询重定向到一个错误的IP地址(通常是一个不存在的地址),从而防止用户访问该网站。这种措施通常是由政府、公司或组织实施,旨在防止用户接触到不适当、危险或非法的内容。 网络攻击相关 什么是TCP的SYN攻击?如何预防? TCP SYN攻击是一种利用TCP协议三次握手机制的攻击。攻击者发送大量伪造的TCP SYN请求(数据包),然后在TCP三次握手建立连接的第二步时停止(使服务器不断地向攻击者发送SYN-ACK确认,但攻击者不回复ACK确认),从而导致服务器等待客户端的确认信号很长时间,最终占用服务器的资源而无法处理新的请求。 为了预防TCP SYN攻击,可以采取以下措施: 服务器操作系统的设置:可以设置TCP的连接数和时间等参数,限制每个IP地址的连接数,设置连接超时时间。 防火墙设置:可以设置防火墙规则,根据IP地址、端口等信息对连接进行过滤,控制IP地址的访问等。 加强网络监测:使用入侵检测系统(IDS)对流量进行实时监控,并对异常流量进行报警处理。 使用SYN Cookies:SYN cookies是一种可以防止SYN攻击的技术,它通过特殊的算法对TCP连接进行加密,并保存在服务器端,当客户端发送响应时,服务器端可以对连接进行识别和验证,从而防止SYN攻击。 增加硬件设备:可以增加具有流量分析和过滤功能的硬件设备来协助防御SYN攻击,这种设备可以通过分析流量实现精细化的流量分析和识别。 ddos攻击的类型 DDoS攻击(Distributed Denial of Service)是一种利用许多计算机和网络设备构成的“僵尸网络”对一个或多个目标服务器发起攻击,从而占用大量的网络资源,耗尽系统资源,导致服务拒绝的攻击方式。DDoS攻击的类型可以分为以下几种: 带宽攻击(Bandwidth-based Attack):利用大量的数据流或报文,通过消耗目标系统的网络带宽使其服务不能正常传输。 应用层攻击(Application-Layer Attack):利用正常流量模拟合法用户的请求,通过消耗服务器CPU和内存资源使其无法处理合法请求。 反射式攻击(Reflection Attack):使用伪造的IP地址向网络中的一个或多个服务器发起请求,这些服务器会响应请求,但响应信息将被发回目标服务器,从而形成了一次反射式攻击。 慢速攻击(Slowloris Attack):利用HTTP协议的设计漏洞,向目标服务器发送大量不完整请求,从而占用目标服务器处理请求的线程资源。 IoT攻击(IoT Attack):通过侵入大量的物联网设备,如路由器、摄像头、智能家居等,利用这些设备来发起攻击,构建大规模的“僵尸网络”。 DNS Amplification攻击:攻击者向域名服务器发送请求,利用伪造的IP地址和请求报文,让服务器向目标主机发送大量的DNS解析响应数据包,从而使目标系统在短时间内遭受网络拥塞。 NTP Amplification攻击:攻击者伪造IP地址,向其余互联网上安装有网络时间服务器(Network Time Protocol,NTP)软件的服务器发送请求,从而获取大量NTP响应包,最终将其转发到目标IP地址,从而占用目标系统的网络带宽。 SYN Flood攻击:攻击者向目标服务器发送大量的TCP SYN请求,但却不发送客户端的应答确认,造成服务器长时间处于等待状态,无法接受正常的TCP连接请求。 HTTP Flood攻击:攻击者利用HTTP叠加攻击、HTTP POST攻击等手段,向目标系统发送大量HTTP请求和数据包,造成目标系统资源的耗尽,从而导致服务不可用。 ICMP Flood攻击:攻击者向目标系统发送大量的ICMP数据包,造成目标系统CPU和内存资源的消耗,从而导致系统缓慢或崩溃。 什么是反射式攻击 反射式攻击(Reflection Attack)是一种利用网络协议的设计缺陷进行攻击的方式。攻击者通常会利用一些可以进行源地址欺骗或反射的协议,例如Domain Name System(DNS),Simple Network Management Protocol(SNMP),和Network Time Protocol(NTP)等。攻击者利用这些协议在网络中进行广播,构造一些请求消息,伪造源IP地址为目标IP地址,将请求消息发送给网络上的服务器,要求其向目标IP地址回送响应。这样攻击者就可以通过伪造的IP地址对目标系统进行攻击,占用它的网络带宽和资源,极大地降低了目标系统的可用性。...

 ·  · 

监控类面试题

Prometheus的四种数据类型 Counter(计数器类型) Counter类型的指标的工作方式和计数器一样,只增不减 Gauge(仪表盘类型) Gauge是可增可减的指标类,通常用于反应当前应用的状态。 Histogram 主要用于表示一段时间范围内对数据进行采样 Summary(摘要类型) Summary类型和Histogram类型相似,主要用于表示一段时间内数据采样结果 Prometheus 的局限 Prometheus 是基于 Metric 的监控,不适用于日志(Logs)、事件(Event)、调用链(Tracing)。 Prometheus 默认是 Pull 模型,合理规划你的网络,尽量不要转发。对于集群化和水平扩展,官方和社区都没有银弹,需要合理选择 Federate、Cortex、Thanos等方案。 监控系统一般情况下可用性大于一致性,容忍部分副本数据丢失,保证查询请求成功。这个后面说Thanos 去重的时候会提到。 Prometheus 不一定保证数据准确,这里的不准确一是指 rate、histogram_quantile 等函数会做统计和推断,产生一些反直觉的结果,这个后面会详细展开。二来查询范围过长要做降采样,势必会造成数据精度丢失,不过这是时序数据的特点,也是不同于日志系统的地方 采集组件 All IN One Prometheus 体系中 Exporter 都是独立的,每个组件各司其职,如机器资源用 Node-Exporter,Gpu 有Nvidia Exporter等等。但是 Exporter 越多,运维压力越大,尤其是对 Agent做资源控制、版本升级。我们尝试对一些Exporter进行组合,方案有二: 通过主进程拉起N个 Exporter 进程,仍然可以跟着社区版本做更新、bug fix。 用Telegraf来支持各种类型的 Input,N 合 1。另外,Node-Exporter 不支持进程监控,可以加一个Process-Exporter,也可以用上边提到的Telegraf,使用 procstat 的 input来采集进程指标。 合理选择黄金指标 采集的指标有很多,我们应该关注哪些?Google 在 “Sre Handbook” 中提出了“四个黄金信号”:延迟、流量、错误数、饱和度。实际操作中可以使用 Use 或 Red 方法作为指导,Use 用于资源,Red 用于服务。 Use 方法:Utilization、Saturation、Errors。如 Cadvisor 数据 Red 方法:Rate、Errors、Duration。如 Apiserver 性能指标 Prometheus 采集中常见的服务分三种:...

 ·  ·