Alexander
и вот столкнулся с ткой проблемой
Kirill
Попробуй на линухе покатай
Petr
Да можно просто потрассировать процесс
Petr
посмотреть затыки
Petr
там ничего сложного
Petr
взыть какой нибудь dtrace или strace
Alexander
А чо там в макоси, truss какой-нибудь?
Petr
dtrace есть
Petr
в макоси
Alexander
трассировать думаю будет ад, ибо увижу кучу syscall ов работающих подключений
Andrey
Всем привет.
пытаюсь прочитать pom.xml вот в такую структуру, но в модулях почему-то только один элемент. Что я пропустил?
type XmlFile struct {
GroupId string `xml:"groupId"`
ArtifactId string `xml:"artifactId"`
Version string `xml:"version"`
Modules []Module `xml:"modules"`
}
type Module struct {
ModuleName string `xml:"module"`
}
Constantine️
потому что ты забыл сюда xml запостить как пример?
Constantine️
или это черный ящик? )
Alexander
Есть еще вариант, что вот эти горутины с подключениями работают может быть как-то монопольно и горутина, обрабатывающая accept не срабатывает?
Alexander
Petr
Petr
нет там никакого ада
Alexander
parent, dependency, profile, repositories, build еще там куча всего
Alexander
kås
pprof делал?
kås
и go tool trace
Andrey
Народ, посмотрите пожалуйста что не так?!
Хочу увидеть все элементы, а не только один после парсинга: https://play.golang.org/p/AgC5vdmtsE5
Илья
Илья
или даже так
Andrey
David
Привет
David
Какая тут политика в отношении вакансий?
David
можно постить? 🙂
Alexander
можно постить? 🙂
говорят если посмотреть описание чатика, можно найти ответы на кучу вопросов
Alexander
могу спойлернуть, что без вилки лучше не постить
David
побьют?
Tigran
затравят!
Tigran
впрочем, с вилкой тоже могут
David
окей
David
https://aviasales.recruitee.com/o/backend-developer-golang-python
David
вилка $1-10k в месяц 🙂
Alexander
релокация в тай, емнип
David
да
Tigran
итс э трэп
Anonymous
David
если интересно, переписываем поисковый движок с питона на го
David
так что работы много, проект свежий и будет интересно )
Alexander
надо было просто сразу на джяве писать
David
ага, я тоже так говорю
David
но это итеративный процесс
Tigran
поисковый движок на питоне
Tigran
это ж надо было придумать
David
это еще и заимплементить надо было
Антон
Alexander
*на расте
как же на нем сразу писать, если его нет ?
Tigran
а зачем свой поисковый движок вообще?
David
затем что мы метапоиск
David
это бизнес авиасейлс
David
в общем, не стесняемся и аплаимся, можно еще друзьям порекомендовать
Alexander
Блин, как вообще по этому tool trace что-то понять
Alexander
Alexander
И какой вывод из этого я должен сделать? что у меня много Read/Write, ну это и так понятно
Tigran
У тебя настолько много Read/Write, что оптимизировать что-то ещё бессмысленно
Alexander
Моя задача сделать так, чтобы коннекты коннектились, а не зависали...
Илья
хм, попробуй отцепить тред который аксептит явно
Илья
runtime.LockOSThread()
Denis
Alexander
Походу я как-то не так сделал, но LockOSThread чет не помог
Alexander
func (srv *Server) Start() (err error) {
runtime.LockOSThread()
address := srv.host + ":" + srv.port
srv.listener, err = net.Listen("tcp", address)
if err != nil {
log.WithError(err).WithFields(log.Fields{
"address": address,
}).Error("Error on listener start")
os.Exit(1)
}
log.WithFields(log.Fields{
"address": address,
}).Info("Server start")
for {
log.Info("accepting start...")
conn, err := srv.listener.Accept()
if err != nil {
log.WithError(err).Error("accepting connection")
os.Exit(1)
}
log.WithFields(log.Fields{
"from": conn.RemoteAddr().String(),
"to": conn.LocalAddr().String(),
}).Info("accepting connection")
srv.acceptConnection(conn)
}
return
}
Alexander
попробовал так
Alexander
блин, надо было в gist завернуть, соре
Alexander
Alexander
и для полноты картины
func (srv *Server) acceptConnection(conn net.Conn) {
srv.connLock.Lock()
defer srv.connLock.Unlock()
connection := NewConnection(srv, conn)
srv.connections[connection.id] = connection
go srv.connections[connection.id].handleConnection()
}
Alexander
вот как раз handleConnection() и занимается Read/Write в свой net.Conn
Je
Daniel
зависит от того, чего вы хотите
Je
https://golang.org/src/runtime/netpoll_epoll.go#L59