我在使用Redis复制时遇到问题,无法解决。主服务器不断达到客户端输出缓冲区限制。
主配置:
# redis-cli -p 6380 config get client-output-buffer-limit
1) "client-output-buffer-limit"
2) "normal 0 0 0 slave 536870912 536870912 0 pubsub 33554432 8388608 60"
Run Code Online (Sandbox Code Playgroud)
主日志:
Client id=3014598 addr={{MASTER}} fd=6 name= age=217 idle=217 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=3723 oll=4806 omem=581952061 events=rw cmd=psync scheduled to be closed ASAP for overcoming of output buffer limits.
Run Code Online (Sandbox Code Playgroud)
主信息:
# redis-cli -p 6380 info
role:master
connected_slaves:1
slave0:ip={{SLAVE_IP}},port=6380,state=wait_bgsave,offset=0,lag=0 // stays on wait_bgsave
Run Code Online (Sandbox Code Playgroud)
从站信息:
role:slave
master_host:{{MASTER_IP}}
master_port:6380
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:1
Run Code Online (Sandbox Code Playgroud)
Redis版本:3.0.2
数据库大小:〜21GB主服务器是30GB Ram EC2实例从服务器是60GB Ram …
我想知道是否有人有让 Laravel 任务计划程序在不跨多个服务器重叠的情况下工作的经验。
把它放在上下文中:我在负载均衡器后面有 3 个 API 服务器。我知道任务调度程序允许在单个服务器上使用 withoutOverlap 标志,但是我如何在所有服务器上使用相同的主体?我只希望 1 台服务器运行计划任务,而其他 2 台服务器不运行它们。
据我所知,我的选择是:
从 2 个服务器中删除 crontab。 我的服务器是自动化的,并且不想从任何服务器中删除 crontab 作业,因为这会使我的自动化构建复杂化。
编写一个包,使用 DB 将任务限制为仅运行的第一台服务器。 我可以这样做,但我想知道它是否已经完成(在谷歌上找不到任何东西)
有什么建议吗?
我想我尝试编写的这个Nginx配置可能比我可以尝试的更多。我是nginx config的新手,并且我正在尝试编写一个非常复杂的配置(至少对我来说)。任何帮助将不胜感激。
- 将http $ http_x_forwarded_proto重定向到https(在ec2负载均衡器处https断开)
- 与prerender.io的Nginx中间件一起使用(用于可爬网单页应用程序的SEO)
- 将任何查询参数(
_escaped_fragment_=)从http传递到https- 将所有子域请求重定向到https://example.com/c/ $ subdomain
- 允许http://example.com/healthcheck.txt通过http(负载均衡器运行状况检查)
server {
listen 80;
server_name example.com;
root /var/www/html/dist;
index index.html;
error_log /var/log/mysite/error.log;
access_log /var/log/mysite/access.log;
location /healthcheck.txt {
break;
}
location / {
try_files $uri @prerender;
if ($http_x_forwarded_proto != "https") {
set $urltest N;
}
if ($query_string) {
set $urltest "${urltest}Y";
}
if ($urltest = N) {
rewrite ^(.*)$ https://example.com$1 permanent;
}
if ($urltest = NY) {
rewrite ^(.*)$ https://example.com$1?$query_string permanent;
}
} …Run Code Online (Sandbox Code Playgroud) 我已经搜索了如何将简单的ContentType元数据添加到AWS PHP SDK中的MultiPartUploader.该文档明确提及如何做到这一点的PutObject,但没有提及如何使用MultiPartUploader做到这一点.
我已经尝试了我可以在网上找到的每种方法,但没有任何工作,我的文件总是被设置为application/octet-stream.
有人对这个有经验么?这是我的代码:
$uploader = new MultipartUploader($this->s3, $local_path, [
'bucket' => env('AWS_BUCKET'),
'key' => $path .'/'. $filename,
'contentType' => 'video/mp4', // have tried this
'metaData' => [ // have tried this (all well as all variations of caps)
'contentType' => 'video/mp4',
]
]);
do
{
try
{
$result = $uploader->upload();
}
catch (MultipartUploadException $e)
{
$uploader = new MultipartUploader($this->s3, $local_path, [
'state' => $e->getState(),
]);
}
}
while (!isset($result));
Run Code Online (Sandbox Code Playgroud)
通过MultiPartUploader类阅读后,它看起来像contentType中应自动设置的,但它没有被设置.
我正在使用SDK的v3
任何建议将不胜感激!