Para grandes itens estáticos, mova-os para um CDN como o Amazon CloudFront.
Tivemos uma interrupção interessante hoje em um dos sites de nossos clientes. Do nada, o site estava inacessível. O site funciona sozinho em um servidor físico Windows 2003 R2 dedicado (provavelmente exagero, eu sei, mas isso é uma discussão para um dia diferente). Depois de reiniciar o IIS e o ColdFusion Application Service, o problema voltou várias vezes. Meu pensamento inicial foi de que era um problema de DNS, o que acontece ocasionalmente - a última vez que aconteceu foi depois do furacão Sandy quando nosso ISP estava fora, e tivemos que fazer algumas alterações nas configurações de rede. Mas não foi um problema de DNS. Meu segundo pensamento foi que era um ataque DDOS, mas há muito pouca razão para alguém querer derrubar esse site. Quando ligamos para o nosso ISP, o operador do outro lado notou que o tráfego estava aumentando significativamente. Como se viu, o cliente acidentalmente causou um DDOS no site, depois de fazer o FTP de um arquivo de vídeo muito grande, e em massa enviou um link para ele. Centenas de pessoas clicaram no link e deixaram o site de joelhos.
Sou principalmente um programador de sites, mas às vezes preciso contribuir para a administração do servidor às vezes. Infelizmente, sou residente do ColdFusion e do IIS, mas não tenho muita experiência com esse problema. Quais são alguns passos básicos que posso tomar para evitar que isso aconteça no futuro, já que nem sempre podemos controlar quais arquivos o cliente envia ao site.
Aqui estão algumas ideias que tive, mas não tenho certeza do impacto:
Maximum number of simultaneous Template requests
está atualmente definido para 20. Eu poderia reduzir esse número para algo como 5 apenas para evitar ocorrências como essa, mas isso provavelmente teria um efeito adverso no uso normal do site. Estou aberto a qualquer sugestão, pois continuo minha pesquisa para relatar ao CTO as melhores opções, para que possamos implementar uma solução.
Obrigado.
UPDATE: Relatório de uso do tempo em torno da interrupção:
Para grandes itens estáticos, mova-os para um CDN como o Amazon CloudFront.
Aqui está a solução com a qual estou trabalhando agora:
Todos esses links para carregar documentos vão para uma página, com informações adicionais anexadas na string de consulta:
/www.site.com/viewFile.cfm?fileId=1424545
Eu atualizei este arquivo para simplesmente conter um iframe que aponta para um site separado que exibe o arquivo de mídia:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
html {
overflow: hidden;
}
iframe {
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
border: none;
}
</style>
</head>
<body>
<cfoutput>
<iframe src="http://media.site.com/index.cfm#CGI.PATH_INFO#"frameborder="0"></iframe>
</cfoutput>
</body>
</html>
Esse site separado (media.site.com) reside em um servidor diferente (que é servido por uma linha ISP separada, que na verdade é uma linha de 15Mbps, mas também lida com outro tráfego para a empresa) e index.cfm
nesse site contém toda a lógica que residia anteriormente na página de destino atual e exibe o arquivo no diretório local, que sincroniza os arquivos de mídia de onde eles residem originalmente.
Um pouco hack-ish, mas faz o trabalho. Dessa forma, se os usuários sobrecarregarem as solicitações de arquivos de mídia, apenas o site / servidor / linha IPS ficará inativo, mas o site original permanecerá "operacional", para que os usuários ainda possam executar funções normais, mesmo que possam veja os arquivos de mídia.