ไม่สามารถเริ่ม Redis Datastore Server (Ubuntu 16.04.1 LTS)


10

ฉันเพิ่งติดตั้ง Redis และมันไม่ทำงานเลยเมื่อพยายามเริ่มบริการด้วยคำสั่ง:

sudo service redis-server start

นี่คือผลลัพธ์ของjournalctl -xe:

Subject: Unit redis-server.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit redis-server.service has finished shutting down.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.

และนี่คือผลลัพธ์ของsystemctl status redis-server.service:

 redis-server.service - Redis Datastore Server
 Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
 Active: inactive (dead) (Result: resources) since Kam 2017-03-02 13:22:46 WIB; 5min ago
 Process: 12120 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)

Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
Mar 02 13:22:46 aaaaa-notebook systemd[1]: redis-server.service: Unit entered failed state.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Failed with result 'resources'.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Mar 02 13:22:46 aaa-notebook systemd[1]: Stopped Redis Datastore Server.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.

คำตอบ:


14

ฉันมีปัญหาเดียวกันและไม่สามารถหาวิธีแก้ปัญหาที่ทำงานได้ทุกที่ หลังจากการค้นหาบางอย่างการแก้ไขต่อไปนี้ใช้งานได้สำหรับฉัน (Ubuntu 16.04)

ใน/etc/systemd/system/redis.service ให้เพิ่มสิ่งต่อไปนี้ภายใต้[Service]ส่วน

Type=forking

1
ขอบคุณมาก! คุณค้นพบวิธีเพิ่มสิ่งนี้ได้อย่างไร มันทำอะไรได้จริง?
fpghost

4

เปิดบริการของคุณโดยใช้เครื่องมือแก้ไข

vim /etc/systemd/system/redis.service

ดู[Service]ส่วนของคุณที่ExecStartฉันเป็น:

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

เรียกใช้คำสั่งนี้เพื่อดูว่ามีข้อผิดพลาดใดเกิดขึ้น ฉันตอบกลับด้วยสิ่งนี้:

 Fatal error, can't open config file '/etc/redis/redis.conf'

ดังนั้นฉันเพิ่งอัปเดตบรรทัดนั้นเป็นไฟล์นี้ (ที่ไฟล์ปรับแต่งที่แท้จริงของฉัน)

ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf

จุดไหนที่ redis quickstart เริ่มต้น ... :)


2

ฉันประสบข้อผิดพลาดเดียวกัน แต่สำหรับฉันเหตุผลที่แตกต่างกันโดยสิ้นเชิง: มันเป็นเพราะพิมพ์ผิดในredis.confไฟล์ของฉัน การแก้ไขนั้นและทำการsudo systemctl restart redis-serverรีสตาร์ทใหม่จะเปลี่ยนเป็นสีแดงทันที มันทำให้เข้าใจผิดว่าข้อผิดพลาดเดียวกันจะถูกโยนสำหรับกรณีนี้ด้วย


2

ในกรณีของฉันไม่มีการบันทึกไดเรกทอรี ( /var/log/redis) ซึ่งฉันพูดถึงใน/etc/redis/redis.confไฟล์

ฉันพบข้อผิดพลาดได้อย่างไร

ลอง

/usr/local/bin/redis-server /etc/redis/redis.conf

นี่เป็นคำสั่งเดียวกันที่มีอยู่ใน/etc/systemd/system/redis.serviceไฟล์ของฉัน

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

สารละลาย

1) สร้างไดเรกทอรีบันทึก

sudo mkdir -p /var/log/redis

2) ให้การเข้าถึงที่เหมาะสมเพื่อสร้างและเขียนบันทึก

sudo chown redis:redis /var/log/redis

ลองเริ่มบริการอีกครั้ง

sudo service redis-server start 

หรือ

sudo service redis start

1

ไฟล์ redis.service ขาดหายไปในไดเรกทอรี "/ etc / systemd / system /"

sudo nano /etc/systemd/system/redis.service

จากนั้นคัดลอกและวางบรรทัดเหล่านี้

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

บันทึกและปิดไฟล์นี้

ปรับเปลี่ยนการอนุญาตไดเรกทอรีถัดไป

$ sudo adduser --system --group --no-create-home redis
$ sudo chown redis:redis /var/lib/redis
$ sudo chmod 770 /var/lib/redis

เริ่มต้นเซิร์ฟเวอร์ redis ต่อไป

$ sudo systemctl เริ่ม redis

ตรวจสอบว่ามันทำงานอยู่ตอนนี้

$ sudo systemctl เปลี่ยนสถานะเป็นสีแดง

การอ้างอิง: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04


0

redis.logกรุณาตรวจสอบของคุณ คุณควรเห็นสิ่งนี้:

41393:M 07 Jun 17:02:19.034 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
41393:M 07 Jun 17:02:19.034 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
41393:M 07 Jun 17:02:19.034 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
41393:M 07 Jun 17:02:19.034 # Can't open the append-only file: Read-only file system

ดังนั้นตรวจสอบข้อ จำกัด ของระบบและอาจอนุญาตไฟล์ของredisAOF ( /var/lib/redis/*) สำหรับข้อ จำกัด ของระบบที่นี่เป็นคำแนะนำที่ดี


0

ฉันต้องการทั้งโฟลเดอร์ / var / lib / redis และผู้ใช้และกลุ่ม redis

ผมใช้เควินอัพตันhttps://askubuntu.com/a/981641/451682คำแนะนำในการค้นหาปัญหาของฉันvim /etc/systemd/system/redis.serviceทำให้ฉัน /usr/local/bin/redis-server /etc/redis/redis.confซึ่งตอบโต้ด้วยการที่ผมสร้างขึ้นด้วยCan't chdir to '/var/lib/redis': No such file or directorysudo mkdir /var/lib/redis

แล้ว แต่ผมยังต้องสร้างผู้ใช้ Redis และกลุ่มและป๋อมว่าใน / var / lib / Redis dir ตาม Rishik โรฮันhttps://askubuntu.com/a/918408/451682 :

sudo adduser --system --group --no-create-home redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis

ขอบคุณคุณสองคน!


0

หลังจากทำให้ทุกคนลองคำสั่งเหล่านี้

sudo systemctl daemon-reload

sudo chown redis:redis /var/lib/redis

sudo chmod 770 /var/lib/redis

และหลังจากนั้น

sudo systemctl start redis

0

ขั้นตอนในการแก้ไขปัญหานั้น: - + ============== + A. ตั้งค่าขีด จำกัด หน่วยความจำใน redis.conf ในบรรทัดหมายเลข 566

566 maxmemory 256mb 567 maxmemory-policy allkeys-lru

B. ตั้งค่าเคอร์เนลลินุกซ์แทนการตั้งค่าหน่วยความจำเป็น 1:

$ sudo sysctl vm.overcommit_memory = 1

หรือ /etc/sysctl.conf และเปลี่ยนเป็น 1

C. รีสตาร์ทเซิร์ฟเวอร์ redis ทันที

$ systemctl รีสตาร์ทสีแดง

โปรดตรวจสอบสถานะ Redis

และหากยังคงมีปัญหาอยู่ให้ไปที่แก้ไขและให้บริการไฟล์อีกครั้ง

========= vi /etc/systemd/system/redis.service

คุณจะเห็นเช่นนี้: -

[หน่วย] คำอธิบาย = เพิ่มที่เก็บข้อมูลในหน่วยความจำใหม่หลังจาก = network.target

[บริการ] ผู้ใช้ = กลุ่มราก = ราก ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf ExecStop = / usr / local / bin / redis-cli รีสตาร์ท = เสมอ

พิมพ์ = ง่าม

[ติดตั้ง] WantedBy = multi-user.target

เปลี่ยน ExecStart = / usr / local / bin / redis-server /etc/redis/redis.conf

ถึง

ExecStart = / usr / local / bin / redis-server /etc/redis.conf

ตอนนี้เริ่มบริการ redis

$ systemctl เริ่ม redis

ตอนนี้ Redis จะเริ่มโดยไม่มีข้อผิดพลาดใด ๆ

+ + ==============

ทดสอบ Redis: -

[root @ server] # redis-cli 127.0.0.1:6379> ping ใช้คำสั่ง echo เพื่อสะท้อนสตริงที่กำหนด: 127.0.0.1:6379> echo "Tecmint กำลังทดสอบ Redis" คุณยังสามารถตั้งค่าคีย์โดยใช้คำสั่ง set เช่นนี้: 127.0.0.1:6379> set mykey "กำลังทดสอบ Redis" ตอนนี้ดูค่าของ mykey: 127.0.0.1:6379> รับ mykey "กำลังทดสอบ Redkey" 127.0.0.1:6379> ออกจาก [root @ server] #

ตอนนี้ redis เริ่มต้นสำเร็จและทำงาน

+ + ==================

ขอขอบคุณและขอแสดงความนับถือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.