FTP上传文件经常中断或超时的解决方案[完整篇]

FTP上传文件经常中断或超时的解决方案[完整篇],第1张

近日做了一个简单的活,就是把一个phpcms建的网站整站迁移到另一个空间上。原本应该是很简单的事情,无奈却处处碰壁,遇到各种问题。终于在今天把所有问题解决,特撰写此文以留纪念,同时这里面遇到的一些问题的解决方法希望能给需要的朋友一些帮助。

任务:把用所在A服务器的A1域名下的phpcms所建的网站迁移到B服务器下B1域名下。

环境:普通家用15兆宽带(多人使用有路由),B服务器无任何控制面板,仅有ftp和mysql帐号密码。新服务器为unix操作系统,支持php,mysql版本为401

这样的项目并不困难,最简单的方法,就是把A服务器下的全站做个压缩包,传到B服务器上进行解压。A服务器上的数据库用phpmyadmin导出,然后同样用phpmyadmin导入到B服务器的数据库。思路非常清晰,但是却遇到非常多的问题。

第一个问题就是空间不支持解压缩。我用faisun_unzipphp 小程序解压压缩包的时候,提示是没有zlib库,也就是不支持。比较郁闷。既然不支持解压缩,又没有控制面板,那么那些文件只有一个一个的上传了。

于是解开压缩包,开始上传文件,无奈传几个文件以后就开始超时或者假死。很郁闷,phpcms本身自身的文件就有几千,再加上网站运行一段时间后生成的一些文件,如果总是这样超时断开连接,根本无法正常传输。换了几个ftp软件都没有解决问题。

后来换到一款叫做FileZilla的ftp软件,利用软件自带的网络配置向导功能检测了一下网络,说我的网络有问题。于是想到了,一定是路由器的问题,端口的问题。结果按照这个思路,果然解决了问题。下面说一下具体的步骤。

上一页12 3 4 下一页

  为了解决文件增多导致rsync变慢的问题,方案是很多的。

  1、使源目录保存较少文件

  这是一个传统优化办法,因为rsync虽然是同步所有文件,但和同步最近更新的文件是一个道理,因此将源服务器上的目录删除,仅仅保持最近更新的文件,文件数量就变得不但很少,而且是稳定的,随着时间推移,这数量也不会涨得很快。但这样做有个缺点,就是rsync不能使用删除模式,如果有文件要删除,可以将其弄成空文件,假如有更严格要求,可以另一个程序来删除。

  2、使用/dev/shm内存分区

  在源目录保持较少文件的前提下,将文件不存在硬盘上而放入内存,就可以避免系统IO带来的问题,但是这个内存分区在系统reboot后会丢掉所有数据,虽然并不常常需要reboot,但是其中的风险也需要计算清楚。

  3、使用推送方式

  因为性能问题是出现在rsync的客户端,用生产服务器抓取源服务器的话,性能问题就会出现在生产服务器上,这当然不很妥当。假如在生产服务器上使用 rsync daemon,源服务器执行rsync命令将文件推送到生产服务器上,性能问题就转移到了源服务器上,这在一定程度可以保证生产服务器的稳定性。

  4、仅用一台作同步比较

  假如源服务器的文件要被同步到很多台生产服务器,那么会出现rsync并发。可以分析到这些生产服务器在同一时刻文件是一致的,因此每台机都和源服务器做一次比较就是浪费的。这时可以让源服务器和生产服务器同步一次,并且使用-v参数打印出log,其它生产服务器通过同步这个log记录的文件就可以避免数次比较过程。

  5、使用inotify

  inotify就不是rsync了,inotify是一个守护进程,它可以监控到文件目录下的文件变动情况,根据其输出然后用rsync做文件传输,就可以减掉文件比较这个环节。inotify使用并不复杂,对文件变更情况的监控是实时的,也不消耗很多性能。

  以上均是对rsync性能方面做优化,但是优化也会带来问题。在3、4、5号方案中,假如生产服务器有一台机器因为负载或其它问题reboot了,在 reboot过程中同步就失败了,这部分失败的文件假如没有其它处理,就永远不会再同步到生产服务器上。这时可以使用多一路rsync来处理,譬如使用 inotify,做到了实时同步,然后再每小时进行一次完整的rsync同步。这样就可以保证有很高的同步速度,又能使丢失文件的风险控制在一小时之内。

如果是做ERP服务器的话,推荐用双路四核的,这样比较有扩展性

如果以后客户端数量增加了或者数据库文件越跑越大,对性能要求增加,双路服务器的扩展性优势就出来了

你可以看看国产品牌正睿的这款最新SNB-E架构的双路四核服务器

标配一颗至强E5-2609四核处理器(2

4GHz/6

4GT/10M缓存),英特尔C602服务器芯片组主板,8GDDR3REGECC1333MHz内存,SATA3500G大容量服务器硬盘,双千兆网卡,性能可以说是非常不错

如果以后随着业务量的增长,觉得性能不够用了,还可以扩展到两颗处理器,达成8颗处理核心,最大支持256GBDDR3REGECC高速容错校验内存

产品型号:I2TS2-4638产品类型:双路四核塔式服务器处理器:XeonE5-2609内存:8GDDR3REGECC硬盘:SATA3500G机构:塔式

按照《计算机信息系统保密给管理暂行规定》等管理制度规定要求,涉密网络绝对不允许与非密网络进行互联,但由于业务应用的需求,部分涉密信息系统需要实时的收集外部文件,传统人工刻盘的光盘摆渡机方式已经无法满足数据收集实时性要求,需要技术上有突破。

安盟华御安全隔离与信息单向导入系统(简称“单向光闸”)的文件单向传输功能,在满足文件从非涉密网向秘密级网或低密级网向高密级网的单向实时传输文件的要求下,从物理上保证高密级网络绝对不能向低密级网络传输任何信息。

技术原理

基于SFP光模块中发光器和收光器分离的技术特点,安盟华御单向光闸的两个主机之间只是通过外网主机光模块的一个发光器与内网主机光模块的一个收光器连接,从而从物理原理上实现了数据的绝对单向传输。

基于单向传输部件,结合传统安全隔离网闸的“摆渡+代理”技术,安盟华御单向光闸在保证单向数据传输的同时,保证数据的实时、准确、可控传输。

功能实现

 针对文件单向由低密级向上传的应用需求,安盟华御单向光闸提供了两种上传方式。

(1) 主动文件单向上传

基于安盟华御单向光闸内置的FTP/SMB等文件客户端模块,实现单向光闸主动从低密级FTP/SMB服务器上抓取指定文件,经单向传输后,推送到高密级FTP/SMB服务器上指定的目录。

(2) 被动文件单向上传

基于安盟华御单向光闸的专用文件传输模块,低密级客户机(采用专用的文件客户端软件)使用个人认证账号,将文件单向摆渡上传至高密级个人文件夹。单向光闸为每个账号提供了私有目录空间,同时提供了公共目录空间便于文件共享使用。

方案特色

1、冗余算法保证完整性

鉴于单向光闸的单向传输特点,接收单元无任何反馈信息,安盟华御单向光闸采用了专有冗余算法,实现即使在出现少量丢包时,仍能保证文件的完整性。

2、传输文件完全可控

基于用户账户验证,只有合法用户文件才能被上传。同时,目录空间有私有区和公共区之分,满足了文件传输的自由度。

3、多样化的日志管理

安盟华御单向光闸详细记录了系统日志、管理日志、通信日志、安全性阻断日志、内容检查日志等日志信息。

4、设备健康状况自检

具备健康状态自查功能,出现故障时会通过显示输出、声音、日志等方式进行告警。

5、良好的环境适应性

无论主动传输还是被动传输,均兼容Windows/Linux/Unix等多种平台。

适用环境

单向光闸主要用于各地电子政务、军队、军工的信息化建设,下列环境都可使用单向光闸保证业务系统安全:

1、由政务外网向政务内网报送数据

2、行业内下级向上级报送数据

3、低密级网向高密级网传输数据

4、低安全域向高安全域传输数据

5、工业生产网向MIS网/办公网传输数据

典型用户

XX直辖市保密局、XX核工业、广东省公安厅、天津市公安局、呼和浩特市公安局、昆明市公安局、昭通市公安局、怀化市公安局、郴州市公安局、邵阳市公安局

避免数据还原

如果可能的话,我们应该避免从备份系统中还原数据。数据还原流程可能是破坏性的,而且通常会有一些从还原点时间算起的数据丢失。

减少从备份系统中还原数据的最好方式是在你的生产环境中使用冗余的服务器和冗余的存储。例如,Windows分布式文件系统(DFS)可以用来将文件数据复制到镜像服务器,这样即便有文件服务器或存储阵列发生故障,数据仍然是完整的,并且还可以访问。

虽然使用冗余服务器和冗余存储可以对一定类型的故障提供保护,但这种类型的冗余并不能取代备份系统。想象一下,如果有人修改文件时出现错误,而你又已经部署了冗余的文件服务器,那么这个被修改的文件会被复制到你所有的镜像服务器中。恢复丢失数据的唯一方法就是将该文件还原到之前的版本。

冗余备份服务器

规划冗余备份系统解决方案下一步需要考虑的问题是你的备份服务器。在大多数情况下,备份服务器是整个备份基础设施中的一个关键部分,所以你不会希望备份服务器成为一个单点故障。

冗余的备份服务器部署在什么位置可以是不同的,这要基于具体的备份系统架构。但通常你不应该尝试部署平行的、彼此操作独立的备份服务器,因为这样很可能会出现备份一致性的问题。

如果你的组织要实施基于磁盘的备份系统,最好的方法是设计一个两步的备份流程。第一步是使用一台备份服务器来保护你的生产系统。第二步是使用第二台备份服务器来保护第一台备份服务器。这样如果主备份服务器发生故障,备用的备份服务器就可以用来接替出现故障的备份服务器,并恢复之前备份的数据。

冗余备份介质

通过冗余性来保护你的备份系统的另一个方法是使用冗余备份介质。有许多不同种类型的冗余介质。

如果你的组织仍然在使用磁带备份,你可以为每一个磁带创建两个独立的备份。一个可以侧重访问的简易性,另一个则被发送到另一个地点,用于安全保存。

如果你正在使用基于磁盘的备份,实现介质冗余的方法有点不同。一个方法是使用磁盘到磁盘再到磁带的备份,将数据复制到磁盘用于备份,再复制到磁带用于安全保存。

另一个方法是使用镜像的存储。它允许你的备份数据被复制到一台相同的存储阵列。但需要指出的是,这种方法不会在可移动的介质中产生备份数据。既然是这样,企业或组织就应该考虑将备份服务器的内容复制到云或者备份的数据中心,这是相对在本地数据中心使用单独的硬件备份设备来说的。

首先运行locale查看本地编码方式:

方式一:

[root@localhost hins]# locale

LANG=en_USUTF-8

LC_CTYPE="en_USUTF-8"

LC_NUMERIC="en_USUTF-8"

LC_TIME="en_USUTF-8"

LC_COLLATE="en_USUTF-8"

LC_MONETARY="en_USUTF-8"

LC_MESSAGES="en_USUTF-8"

LC_PAPER="en_USUTF-8"

LC_NAME="en_USUTF-8"

LC_ADDRESS="en_USUTF-8"

LC_TELEPHONE="en_USUTF-8"

LC_MEASUREMENT="en_USUTF-8"

LC_IDENTIFICATION="en_USUTF-8"

LC_ALL=

方式二:

[root@localhost hins]# echo $LANG

zh_CNGBK

这是服务器默认的编码,根据后面的方法修改后应该为:

(我修改为GBK以后的linux服务器的编码)

方法如下:

方法1:(试了一下,编码方式没有改变,可能是要重启服务器才能生效)

vi /etc/sysconfig/i18n

默认为:

LANG="en_USUTF-8"

SYSFONT="latarcyrheb-sun16"

修改为:

LANG="zh_CNGBK"

SUPPORTED="zh_CNUTF-8:zh_CN:zh"

SYSFONT="latarcyrheb-sun16"

方法2:(推荐这种方法,不用重启服务器)

vi /etc/profile

export LC_ALL="zh_CNGBK"

export LANG="zh_CNGBK"

生效:source /etc/profile

[root@localhost hins]# locale

LANG=zh_CNGBK

LC_CTYPE="zh_CNGBK"

LC_NUMERIC="zh_CNGBK"

LC_TIME="zh_CNGBK"

LC_COLLATE="zh_CNGBK"

LC_MONETARY="zh_CNGBK"

LC_MESSAGES="zh_CNGBK"

LC_PAPER="zh_CNGBK"

LC_NAME="zh_CNGBK"

LC_ADDRESS="zh_CNGBK"

LC_TELEPHONE="zh_CNGBK"

LC_MEASUREMENT="zh_CNGBK"

LC_IDENTIFICATION="zh_CNGBK"

LC_ALL=zh_CNGBK

运行locale指令得到当前系统编码设置的详细资料。

一、locale的五脏六腑

1、 语言符号及其分类(LC_CTYPE)

2、 数字(LC_NUMERIC)

3、 比较和排序习惯(LC_COLLATE)

4、 时间显示格式(LC_TIME)

5、 货币单位(LC_MONETARY)

6、 信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)

7、 姓名书写方式(LC_NAME)

8、 地址书写方式(LC_ADDRESS)

9、 电话号码书写方式(LC_TELEPHONE)

10、度量衡表达方式(LC_MEASUREMENT)

11、默认纸张尺寸大小(LC_PAPER)

12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

二、理解locale的设置

设定locale就是设定12大类的locale分类属性,即 12个LC_。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。

它们之间有一个优先级的关系:LC_ALL > LC_ > LANG

可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。

三 具体设定locale的方法(zh_CNUTF-8、zh_CNGBK)

freebsd的设置:

1GDM登录改为终端登录后startx启动图形桌面

2在~/cshrc中增加如下语句,(根据自己使用的shell进行相应设置)

setenv LANG zh_CNGBK

setenv LC_ALL zh_CNGBK

setenv LC_CTYPE zh_CNGBK

3修改/etc/fstab的默认值:

linux 设置:

1修改/etc/sysconfig/i18n文件,LANG="zh_CNUTF-8"或LANG="zh_CNGBK"

普通用户修改~/profile

export LANG zh_CNGBK

2修改/etc/fstab的默认值

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » FTP上传文件经常中断或超时的解决方案[完整篇]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情