Max
вот собственно результат профайлинга пхп драйвера, самое долгое время выполения [2018-05-11T11:26:29.488486+00:00] mongoc: TRACE > ENTRY: mongoc_server_description_handle_ismaster():493 [2018-05-11T11:26:29.488507+00:00] mongoc: TRACE > EXIT: mongoc_server_description_handle_ismaster():654 [2018-05-11T11:26:29.488519+00:00] mongoc: TRACE > TRACE: mongoc_topology_description_handle_ismaster():1950 Transitioning to RSWithPrimary for RSSecondary [2018-05-11T11:26:29.488531+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_poll():223 [2018-05-11T11:26:29.488535+00:00] socket: TRACE > ENTRY: mongoc_socket_poll():283 [2018-05-11T11:26:39.487224+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_poll():249 [2018-05-11T11:26:39.487256+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_poll():223 [2018-05-11T11:26:39.487261+00:00] socket: TRACE > ENTRY: mongoc_socket_poll():283 [2018-05-11T11:26:39.487265+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_poll():249 [2018-05-11T11:26:39.487272+00:00] stream: TRACE > ENTRY: mongoc_stream_failed():80 [2018-05-11T11:26:39.487296+00:00] stream: TRACE > ENTRY: mongoc_stream_destroy():104 [2018-05-11T11:26:39.487301+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_destroy():71 [2018-05-11T11:26:39.487306+00:00] socket: TRACE > ENTRY: mongoc_socket_close():770 [2018-05-11T11:26:39.487324+00:00] socket: TRACE > EXIT: mongoc_socket_close():805 [2018-05-11T11:26:39.487338+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_destroy():82 [2018-05-11T11:26:39.487341+00:00] stream: TRACE > EXIT: mongoc_stream_destroy():112 [2018-05-11T11:26:39.487354+00:00] stream: TRACE > EXIT: mongoc_stream_failed():90 [2018-05-11T11:26:39.487360+00:00] mongoc: TRACE > ENTRY: mongoc_server_description_handle_ismaster():493 [2018-05-11T11:26:39.487364+00:00] mongoc: TRACE > EXIT: mongoc_server_description_handle_ismaster():500 [2018-05-11T11:26:39.487369+00:00] mongoc: TRACE > TRACE: mongoc_topology_description_handle_ismaster():1950 Transitioning to RSWithPrimary for Unknown задержки по времени только под нагрузкой на запись
Nick
вот собственно результат профайлинга пхп драйвера, самое долгое время выполения [2018-05-11T11:26:29.488486+00:00] mongoc: TRACE > ENTRY: mongoc_server_description_handle_ismaster():493 [2018-05-11T11:26:29.488507+00:00] mongoc: TRACE > EXIT: mongoc_server_description_handle_ismaster():654 [2018-05-11T11:26:29.488519+00:00] mongoc: TRACE > TRACE: mongoc_topology_description_handle_ismaster():1950 Transitioning to RSWithPrimary for RSSecondary [2018-05-11T11:26:29.488531+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_poll():223 [2018-05-11T11:26:29.488535+00:00] socket: TRACE > ENTRY: mongoc_socket_poll():283 [2018-05-11T11:26:39.487224+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_poll():249 [2018-05-11T11:26:39.487256+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_poll():223 [2018-05-11T11:26:39.487261+00:00] socket: TRACE > ENTRY: mongoc_socket_poll():283 [2018-05-11T11:26:39.487265+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_poll():249 [2018-05-11T11:26:39.487272+00:00] stream: TRACE > ENTRY: mongoc_stream_failed():80 [2018-05-11T11:26:39.487296+00:00] stream: TRACE > ENTRY: mongoc_stream_destroy():104 [2018-05-11T11:26:39.487301+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_destroy():71 [2018-05-11T11:26:39.487306+00:00] socket: TRACE > ENTRY: mongoc_socket_close():770 [2018-05-11T11:26:39.487324+00:00] socket: TRACE > EXIT: mongoc_socket_close():805 [2018-05-11T11:26:39.487338+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_destroy():82 [2018-05-11T11:26:39.487341+00:00] stream: TRACE > EXIT: mongoc_stream_destroy():112 [2018-05-11T11:26:39.487354+00:00] stream: TRACE > EXIT: mongoc_stream_failed():90 [2018-05-11T11:26:39.487360+00:00] mongoc: TRACE > ENTRY: mongoc_server_description_handle_ismaster():493 [2018-05-11T11:26:39.487364+00:00] mongoc: TRACE > EXIT: mongoc_server_description_handle_ismaster():500 [2018-05-11T11:26:39.487369+00:00] mongoc: TRACE > TRACE: mongoc_topology_description_handle_ismaster():1950 Transitioning to RSWithPrimary for Unknown задержки по времени только под нагрузкой на запись
К чему это было?
Max
посмотрите профайлером где тупит пхп
Nick
сейчас бы форвардить чтобы нельзя было переключиться на исходное сообщее
Max
https://t.me/MongoDBRussian/24089
Anonymous
ребята, кто-то пытался монгодб драйвер устанавливать для php? http://us1.php.net/manual/en/mongodb.installation.manual.php
Anonymous
у меня почемуто на этапе ./configure выдаёт ошибку - просит пакет krb5-gssapi, которого в природе не существует. При чём тут керберос - вообдще хз
Anonymous
configure: error: Package requirements (krb5-gssapi) were not met: No package 'krb5-gssapi' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PHP_MONGODB_SASL_CFLAGS and PHP_MONGODB_SASL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
Anonymous
помогите плз если кто понимает
Alexey
привет, есть тут бдящие? :)
Alexey
вопрос повышенной сложности: с помощью чего я могу пройти по всем документам в коллекции и собрать среднее арифметическое значений конкретных полей?
Anonymous
Если да то aggregate вам нужн
Alexey
да, хочу, к примеру, определить среднюю зарплату сотрудников. Мне для этого через aggregate нужно получить сумму зарплат, а потом разделить на кол-во записей? Или там как-то все изящно делается?
Anonymous
aggregate $group $avg
Alexey
ок, спс, пошел копаться
Anonymous
Нзч.
Alexey
а есть какая-то возможность округления расчитанных значений? что-то типа db.employees.aggregate([ {$group: {_id: 0, avgSalary: Math.round({$avg: "$salary"})}} ]) ?
Nikita
а можно самому генерировать ID на клиенте для записи в бд ?)
Alexey
не, не подходит. Я хотел округление с указанной точностью, похоже, что такого нет
yopp
Или кщё лучше, не храните больше никогда деньги во флоатах
Alexey
хм, ну деньги-то в интах хранятся, а вот среднее получается дробным, это да
yopp
Этого не категорически нельзя делать, у вас могу существенные ошибки в расчётах
yopp
хм, ну деньги-то в интах хранятся, а вот среднее получается дробным, это да
Ну тогда получите сумму и количество из агрегации, а делите на клиенте
Alexey
так и сделал, спасибо :)
yopp
Ну или если у вас есть возможность со стороны драйверов и монга 3.4+, то перейдите на BigDecimal https://docs.mongodb.com/manual/tutorial/model-monetary-data/
Alexey
еще 1 нубский вопрос: с помощью чего я могу найти самую раннюю (по дате) статью в указанной категории например?
yopp
В запросе фильтр по атрибуту категории и сортировка по дате по возврастанию. Первая запись и будет самой ранней
Max
для истории ... проблему решили в проблеме участвовали - реплика из 2-х mongod и одного арбитра версии 3.6.4 - приложение на пхп с драйвером mongodb 1.4.3 - нагрузка 1,5 К записей в монгу в минуту Арбитр был закрыт фаерволом от всех кроме mongod. Открыли арбитр для пхп и пхп перестал тупить ... 😐
Max
привет. возможно не совсем по теме .. кто то сталкивался с ситуацией на пхп, когда подключение только к мастеру, запись 1,5к/мин документов отдельными запросами проходит нормально. А вот когда в конекшин стринг появляется слэйв - пхп начинает дико тупить драйвер установлен последний, монга 3,6
vitalii
можно вопрос , почему avg_age в ceil не находит , как я понял , агрегацию можно делать подряд db.getCollection('binaryAcademy').aggregate([{$group : {_id:null,avg_age : {$avg : "$age"}}},{ $ceil: avg_age}]);
Max
нет, со слейва тоже доступен
SvPupok
Я так понимаю, что если под условие обновления попадает несколько документов, то в случае updateOne() обновится просто первый документ.
Nick
updateOne() updates the first matching document in the collection that matches the filter, using the update instructions to apply modifications. https://docs.mongodb.com/manual/reference/method/db.collection.updateOne/#behavior
Nick
видимо доку невнимательно читаете
Aleksey
Коллеги а почему монга не ставит на базу по умолчанию 0700 а оставляет дефолтные странные для бд 0755 ? в этом есть какая то логика или тупо прожужали ?
Aleksey
конечно ос ставит.
Aleksey
но почему они так оставляют ?
yopp
Думаю ты хорошо угадал второй вариант :)
yopp
Кстати 0700 плохие права. Я бы группе оставил чтение
yopp
Чтоб обслуживающее ПО не под монговским пользователем бегало
Aleksey
ну ага.
yopp
Посмотри в жире, там скорее всего с 1.8 лежит незакрытый ишшуй на эту тему ;) лайкни и бампни его своим юзкейсом
vitalii
парни вопрос , делаю вот такую команду как теперь найти первое совпадение в масиве friends по имени ? id,index,name,friends[{name:"sfaf"}....] .aggregate([{$match:{index: {$gt: 5}}},{$unwind:"$friends"}])
yopp
Ещё раз match и limit 1
yopp
Но такое вообще проще сразу в match вписать
yopp
index: {...}, “friends.name”: “foo”
yopp
И тогда вы можете без агрегации обойтись и оставить только findOne
SvPupok
Коллеги а почему монга не ставит на базу по умолчанию 0700 а оставляет дефолтные странные для бд 0755 ? в этом есть какая то логика или тупо прожужали ?
Мне вообще думается, что выставление прав оставили на откуп пользователю. На уровне systemd шных скриптов. По крайней мере в дистрибе под 7й центось так реализовано
SvPupok
Момент, сейчас до компа дойду и посмотрю
SvPupok
я имею в виду в стартовом скрипте сервиса следующее: ExecStartPre=/usr/bin/chmod -R 0755 /var/run/mongodb т.е. можно прям при старте базы задавать необходимые пермишены на каталог с датафайлами базы
Max
да, а если база большая - сидите и ждите, пока оно все везде проставит. лучше через umask попробовать
SvPupok
да, а если база большая - сидите и ждите, пока оно все везде проставит. лучше через umask попробовать
так это же сразу, в дефолтовых настройках сервиса присутствует. по крайней мере в версии 3.4.1. Опять же, в пределах шардированного кластера, с базой в 7Тб, вполне нормально работает.
Max
Может быть но звучит странно, как ни крути
Roman
https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf
Roman
вдруг кто не видел
Aleksey
@pragus рома если ты знаешь лично делавшенго презу передай ему что он не очень.
Aleksey
Aleksey
Aleksey
глаза очень вытекают
Aleksey
но в остальном хорошо кратенько и по делу. очень спасибо
Aleksey
под рекомендацию ext4 data=ordered vs xfs хочется букв и графиков
yopp
Очень хорошие слайды. Но вот мониторинг с observability перепутали, про то что в метриках надо искать при troubleshooting тоже не сказали
yopp
Stable: 3.6.4 (Apr 13, 2018), Bugfix: 3.4.14 (Mar 20, 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf 3.6.4: https://docs.mongodb.com/manual/release-notes/3.6/#apr-13-2018 3.4.14: https://docs.mongodb.com/manual/release-notes/3.4/#march-20-2018 (3.4.15 upcoming) 3.2.19: https://docs.mongodb.com/manual/release-notes/3.2/#feb-6-2018 (3.2.20 upcoming, End of life: September 2018) 3.0.x: Support ended February 2018
yopp
под рекомендацию ext4 data=ordered vs xfs хочется букв и графиков
Там много где хочется минимальных графиков :(
Aleksey
я конечно верю парням из перконы. но экспертные мнения эт не оч
SvPupok
Мне у перуоны мониторинг нравится
Anonymous
ребята, помогите, пожалуйста, понять, как на php сделать выборку из монги. Сижу битый час ничё не понятно. Мне нужно выбрать все доки из коллекции, сгруппировав их по полю field1 выбрав так, чтобы field2 был наибольшим. Вообще group не работает ч-то. Делаю на yii2.
Nick
вам select f1,max(f2) group by f1?