LINUX.ORG.RU

Избранные сообщения Mirage1_

Redis сначала работает прекрасно, но потом дико тормозит 100% CPU!

Форум — Development

Рэдис использую как кэш временный на 1 день, без сохранения снапшотов. Сайт с посещаемостью от 50к. Изначально запускаю редис и он работает быстро - так как и нужно, но потом где-то через час он упирается в 100% CPU и начинает ниистово тормозить. Перезапускаю - и он снова работает великолепно. Слышал о том что это возможно из-за ключей удалённых какой-то мусор накапливается… Незнаю куда двигаться.

Server

redis_version:5.0.0 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:589bbec69921e7d1 redis_mode:standalone os:Linux 4.4.0-142-generic x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:5.4.0 process_id:10690 run_id:2bf978f1c4ac625d6f476055026dee521a6e2be6 tcp_port:6379 uptime_in_seconds:633 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:6720524 executable:/root/redis-server config_file:/etc/redis/redis.conf

Clients

connected_clients:7 client_recent_max_input_buffer:215082 client_recent_max_output_buffer:102496 blocked_clients:0

Memory

used_memory:626516840 used_memory_human:597.49M used_memory_rss:619220992 used_memory_rss_human:590.54M used_memory_peak:626679184 used_memory_peak_human:597.65M used_memory_peak_perc:99.97% used_memory_overhead:5102146 used_memory_startup:791928 used_memory_dataset:621414694 used_memory_dataset_perc:99.31% allocator_allocated:627069472 allocator_active:649281536 allocator_resident:657899520 total_system_memory:16826458112 total_system_memory_human:15.67G used_memory_lua:13079552 used_memory_lua_human:12.47M used_memory_scripts:3805152 used_memory_scripts_human:3.63M number_of_cached_scripts:7252 maxmemory:1200000000 maxmemory_human:1.12G maxmemory_policy:allkeys-lru allocator_frag_ratio:1.04 allocator_frag_bytes:22212064 allocator_rss_ratio:1.01 allocator_rss_bytes:8617984 rss_overhead_ratio:0.94 rss_overhead_bytes:18446744073670873088 mem_fragmentation_ratio:0.99 mem_fragmentation_bytes:18446744073702256816 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:151170 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0

Persistence

loading:0 rdb_changes_since_last_save:21619 rdb_bgsave_in_progress:0 rdb_last_save_time:1550223763 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:0 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0

Stats

total_connections_received:3976 total_commands_processed:28536173 instantaneous_ops_per_sec:70602 total_net_input_bytes:553074494 total_net_output_bytes:102416450 instantaneous_input_kbps:887.71 instantaneous_output_kbps:58.73 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 expired_stale_perc:0.00 expired_time_cap_reached_count:0 evicted_keys:0 keyspace_hits:28500429 keyspace_misses:2099 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0

Replication

role:master connected_slaves:0 master_replid:0c163b3898c1ce935bbf4a1938a635c22422c5f2 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0

CPU

used_cpu_sys:3.392000 used_cpu_user:71.864000 used_cpu_sys_children:0.000000 used_cpu_user_children:0.000000

Cluster

cluster_enabled:0

Keyspace

db0:keys=7209,expires=0,avg_ttl=0

 , ,

taram
()

Поддерживает ли Debian 9 и выше TRIM на SSD дисках при полнодисковом шифровании?

Форум — Security

Приветствую форумчан. Есть намерения приобрести SSD под установку Debian. Перелопатил интернет так и не нашел ответа на вопрос, поддерживает ли сама ось Debian 9 и выше trim на SSD накопителях или нет? И еще такой важный вопрос с криптованием. Хочу зашифровать полностью такой SSD и установить Debian так чтобы даже не осталось свободного неразмеченного пространства, тоесть все 100% диска будут зашифрованы в LUKS, boot будет на флешке. Смогу ли я на полностью зашифрованном SSD пользоваться благами trim на этой ОС?

 , , , ,

Deleted
()

Легковесный браузер под Android

Форум — Mobile

ЛОР, привет.

Пользуюсь старой Sony-лопатой со Snapdgragon 400, 1 ГБ озу и практически закончившимся свободным местом на накопителе.

Всё вроде бы ничего, но не могу найти нормальный браузер. Полгода сижу на Yandex Browser Lite, но он очень плохо обрабатывает скрипты (если вообще обрабатывает, я так и не понял), не настраивается интерфейс (например, очень далеко тянуться до кнопки переключения вкладок), совсем не хранит историю.

Зато он не жрёт активно оперативку и зарядку, в фоне при нём могу держать запущенными пару мессенджеров и органайзер.

На что его можно заменить?

Важно, чтобы новый браузер тоже был очень лёгким, а также без рекламы, без тысяч предустановленных плагинов, с простым и не бьющим по глазам интерфейсом, ну и устанавливался на Android 5.1, и при этом поддерживал и скрипты, и хотя бы какие-то возможности настройки, и чтобы там была история. Желательно ещё, чтобы это было не китайское поделие. Встроенный VPN, AdBlock, файрволл, менеджер загрузок и всякие виджеты не нужны.

Ах да, ещё бы хотелось, чтобы он не тормозил. Например, Chrome я отправил в топку именно из-за того, что наблюдать тормоза анимации на шестидюймовом экране очень неприятно, а на предмет соответствия требованиям на телефоне я его даже не стал исследовать.

Коллективный разум ЛОРа, я знаю, ты умный. Посоветуй, пожалуйста.

 , , , ,

djambeyshik
()

Музыка инструментальная для кодинга

Форум — Talks

Накидайте треков, линков, для non-stop кодинга.

Я для себя недавно открыл такого исполнителя, как Alexandr Misko (Fingerstyle Guitar). Если что-то можете посоветовать наподобие группы «One Direction»- тоже киньте.

Bon Jovi - It's My Life (Alexandr Misko)
One Direction - Your Math Skills Are Terrible

 , ,

Mirage1_
()

Swift: tabs vs. 2 spaces vs. 4 spaces?

Форум — Development

Пришли к какому-то консенсусу на этот счёт в Swift сообществе? Stdlib, я смотрю, использует 2 пробела, пакетный менеджер, foundation и многие проекты - 4 пробела. И лишь некоторые сторонние пакеты - табы (второй по популярности стайлгайд - от Github - требует именно их). Правильно понимаю, что нет такого, как в Dart / Go / Rust с единственно верным стилем и «\(lang)fmt»? Что используете вы?

 , , , ,

SwiftRocks
()

Есть ли у Андроида верхний предел зарядки аккума?

Форум — Mobile

(Ну ясно зачем, чтобы аккум не заряжался выше такого-то уровня, например 70%, им это для здоровья вредно. Опен-сорс аппа как я понял, нет. Закрытые такие аппы есть.)

В (какой-нибудь версии) API такое вообще реализовано? В полном (?) списке классов я нашёл только BatteryManager на эту тему. Но в нём такого функционала нет.

Как написать такой апп? Пусть будет неудобно, через эмулятор терминала, как угодно. И пусть есть рут.

Additional keywords: charging threshold

 , ,

the1
()

0.68+0.04 == 0.72: 0; 0.69+0.04 == 0.73: 1, wtf?

Форум — Development
    cout << (0.68 + 0.04) << " == " << 0.72 << ": " << (0.72 == (0.68 + 0.04)) << endl;
    cout << (0.69 + 0.04) << " == " << 0.73 << ": " << (0.73 == (0.69 + 0.04)) << endl;

./a.out:

0.72 == 0.72: 0
0.73 == 0.73: 1

wtf?? o_O

 ,

bender
()

Как побороть " address already in use"

Форум — Development

Здравствуйте.

Есть сферический код TCP-сервера на луа:

local socket = require("socket")
local server = assert(socket.tcp())

assert(server:bind("127.0.0.1", 9970))

-- Опции
assert(server:setoption("keepalive", false))
assert(server:setoption("reuseaddr", false))
assert(server:setoption("tcp-nodelay", true))
assert(server:setoption("linger", {on=false, timeout=1}))

assert(server:listen(0))

local con = assert(server:accept())
assert(con:send("HELLO!!!\n"))
assert(con:receive("*a"))

Подключаюсь к нему с помощью

nc localhost 9970 -v

Если развывать соединение, нажимая Ctrl+C в терминале с nc, то всё норм.

Если же разрывать соединение нажимая Ctrl+C в терминале с сервером, то его последующий запуск вываливается с ошибкой «address already in use» в строке с bind. Через минуту-две запускается нормально

Как побороть «address already in use»? Может подкрутить какие-то опции?

PS: сишников скастовал, потомучто только они разбираются в подобной низкоуровневой магии )

 , , ,

makoven
()

Вопросы по ZeroMQ, RabbitMQ и message broker'ах вообще.

Форум — Development

Я разобрался, что мне было нужно в Фреймворк для облачных вычислений., и начал читать гайд zeromq. Устав писать свой брокер для zeromq на основе Paranoid Pirate из гайда, к которому нужно прилепить передачу файлов в обе стороны, начал смотреть в сторону RabbitMQ. C ним проблема в том, что rabbit-c не документирован, и его примеры меня пугают, zeromq кажется проще.
Есть ли более-менее живые и документированные клиентские библиотеки к RabbitMQ на С/С++, или готовый асинхронный Paranoid Pirate для ZeroMQ?

 , , ,

aptyp
()

ZeroMQ и PUB/SUB Python

Форум — Development

Изучаю ZeroMQ. Цель легкий мессаджинг для VDS (ясно, что там RabbitMQ не очень хорош ибо ресурсов мало).

Беру пример из документации:

Субскрайбер:

import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://127.0.0.1:5000")
socket.setsockopt(zmq.SUBSCRIBE, "sendmail")
 
while True:
    print  socket.recv()

Паблишер:

import zmq
from random import choice
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://127.0.0.1:5000")
 
while True:
          socket.send( msg )

Все работает.

Модифицируем:

Субскрайбер:

import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://127.0.0.1:5000")
socket.setsockopt(zmq.SUBSCRIBE, "sendmail")
 
print  socket.recv()

Паблишер:

import zmq
from random import choice
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://127.0.0.1:5000")
 
socket.send( msg )

Опытным путем удалось установить, что при посылке большого числа сообщений они начинают приходить. Похоже на буфферизацию. Как её отрубить?

Еще вопрос с PUB/SUB как я понял если субскрабера нет все улетает в dev/null Как можно сделать чтоб оно накапливалось. Мне не хочется открывать для каждого канала свой QUEUE и лить туда. Хочется чтоб у меня паблишер плюнул задание и ушел заниматься своим делом, как субскрайбер появился (он мог долго обрабатывать предыдущее) он обработал плюнутое паблишером. Или субскрайберов запущу штук 10 чтоб кто освободился раньше вытаскивал задачу.

demmsnt
()

Свой сайт

Форум — Talks

А как сейчас проще всего завести свой сайт? Какой хостинг? Где регистрировать домен и т.д.?

В принципе, мне подошли бы и бесплатные GitHub Pages, но как-то несолидно скрываться за адресом username.github.io

А то тут Го-дядя заломил цену в двадцать с лишним тысяч за апргрейд за непонятно что, где львиная доля пойдет на какой-то там простенький хостинг с PHP и MySQL, которые я не использую и не планирую в принципе, хотя с ними знаком. У меня, сейчас, вообще, статические страницы, сгенеренные по маркдауну. И я немного был обескуражен их предложением.

В идеале бы иметь возможность использовать свой собственный веб-сервер, но там точно будет что-то другое.

Спасибо!

Перемещено leave из web-development

 

dave
()

Как ловчее интерполировать данные на большой криволинейной сетке (6K x 6K)?

Форум — Development

Есть у меня данные, вытащенные из geotiffки: x_mesh, y_mesh, z_mesh. Это данные уже в декартовых координатах, причём z_mesh — это высота не над уровнем моря, а от некоей касательной плоскости к Земле, можно их рисовать с помощью matplotlib.pyplot.pcolormesh:

http://i.zlowiki.ru/170918_e4b6b2da.png

Всё бы круто, однако хочу я получить значения z в произвольных точках (например, туда, куда я ткну мышкой — или на отрезке между центром карты и кликом мышкой). Для этого я попытался подключить интерполятор из scipy:

interpolator = scipy.interpolate.interp2d(x_mesh, y_mesh, z_mesh)

Но не тут-то было, мне говорят, что точек слишком много: OverflowError: Too many data points to interpolate

Хотя картинка всего 6001x6001px, да и сам pcolormesh как-то значения между узлами интерполирует, при увеличении-то...

Имею спросить: а как же мне эту сволочь интерполировать?

 

Yak
()

Python не могу получить верный результат((

Форум — General

Добрый день возникла токая проблема не могу получить правильный результат..

#!/usr/bin/python
# -*- coding: utf-8 -*-

hexs='ee'
print int(hexs, 16) # 238 (8 byte)
print ????????????? # -18 (1 byte)

# Первый ответ получается (238) 
# А как второй получит по заданию должен (-18)

 

BlackPhreaker
()

Протокол обмена Linux -> датчик

Форум — Development

Добрый день. Первая программа на С++, ругайте только не сильно. Задача вроде простая, есть датчик температуры с выходом RS485 порта я его через конвертер подключил к RS232. При загрузки датчика в консоль дает ответ «Ready». По документации датчик отвечает на запросы, не сыпет данные в консоль постоянно. Запрос состоит из шестнадцатеричного кода [старт бит] ..... [стоп бит] (набор битов есть). Я написал программу

int fd;
int k;
std::vector<uint8_t> wr;
uint8_t buf[512] = { 0 }; 
struct termios oldtio, newtio;
int open_port();

int main(int argc,char **argv){
        fd = open_port();

        wr.clear();
        wr.insert(wr.begin(), 0x56);
        wr.push_back(0x65);
        wr.push_back(0x01);
        wr.push_back(0x02);
        wr.push_back(0x98);
        wr.push_back(0x56);

        /*WRITE*/
        int m;
        for (m=0; m<=wr.size()-1; m++){
                write(fd, &wr[m], wr.size());
                printf(" for= %x \n", wr[m]);
        }
     
        /*READ*/
        while(k!=-1) {
                k=read(fd,buf,512);
                printf(" k= %d  \n",k);
                printf(" buf= %x  \n",buf[0]);
                sleep(1);
        }
        close(fd);
        return(0);
}
int open_port(){
   struct sigaction saio; 
   fd = open(/dev/ttyS0, O_RDWR | O_NOCTTY |O_NONBLOCK);
   fcntl(fd, F_SETOWN, getpid()); 
   fcntl(fd, F_SETFL, O_ASYNC|O_NONBLOCK|fcntl(fd, F_GETFL));
   tcgetattr(fd,&oldtio); /* save current port settings */
   cfsetispeed(&newtio, B9600); 
   cfsetospeed(&newtio, B9600); 
   newtio.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
       | INLCR | IGNCR | ICRNL | IXON);
   newtio.c_oflag &= ~OPOST;
   newtio.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
   newtio.c_cflag &= ~(CSIZE | PARENB);
   newtio.c_cflag |= CS8;
   if((tcsetattr(fd,TCSANOW,&newtio)) != 0){ 
        printf("Error setattr\n");
        exit(1);
   }
   return (fd);
}
Ответа нет!
Возможно я не правильно даже посылаю пакет, а может считываю не правильно. Если есть у кого опыт поделитесь!

Функцию open_port() нашел в интернете.
include не стал перечислять, компиляция проходит.

 , ,

prostoR
()